Post

Visualizzazione dei post da Ottobre, 2018

SQL Injection in semplici parole

Immagine
INTRODUZIONE
Chi ha letto ultimamente le cronache pirandelliane di rousseau? Il "sistema operativo" targato movimento 5 stelle? Sicuramente chi ne avrà sentito ricorda la parola SQL Injection

L'SQL Injection è un attacco mai passato di moda. Anche oggi, dopo una ventina di anni, è sempre di attualità. Infatti non è colpa di un BUG del database ma la colpa è attribuibile solo all'ignoranza di chi scrive i software!

Per i non addetti ai lavori, una query SQL è una "domanda" da effettuare ad un sistema database per recuperare, inserire o modificare i dati scritti all'interno.

Un esempio di domanda è "Recupera tutti i codice fiscali dagli utenti maschi".

Questa query (domanda) viene tradotta in SQL (Structured Query Language) in

select codice_fiscale from utenti where sesso = 'M'
Di solito però una query viene eseguita a partire da un sito o applicazione. Quindi ai fini del nostro esempio, immaginiamo che la query sta a valle di una scher…

GraalVM e programmi nativi Java

Immagine
INTRODUZIONE Per il mondo IT, Java e la sua JVM è stata una vera e propria rivoluzione. La possibilità di poter eseguire lo stesso codice in più architetture era un sogno che grazie alla JVM è divenuto realtà.

Ma come spesso accade non è tutto oro quel che luccica, infatti Java tra le altre cose ha avuto sempre un problema circa l'utilizzo delle risorse. Il più delle volte è stato troppo oneroso al pari di programmi nativi.

Negli anni, e fino alla versione 6 della JDK, GJC è stata un ottima scelta per creare codice nativo al pari del codice C

Purtroppo è stato deciso di abbandonare il progetto, la versione 6 è stata l'ultima supportata.

Nel panorama odierno ci sono pochissime scelte, una tra queste è Excelsior Jet che però è a pagamento.



GRAALVM
GraalVM è un prodotto Oracle che è in grado di creare eseguibili nativi partendo da un JAR (o una classe). Inoltre si candida come VM (Virtual Machine) unica per poter eseguire codice scritto in:

JavaPythonCScalaRubyRJavascript / Node J…

Floating point numbers in JAVA

Immagine
INTRODUZIONE Tutti noi sviluppatori alla parola "numeri a virgola mobile" sentiamo un brivido percorrere la schiena. Ricordi lontani di giorni passati in università per capire come mai dovessimo imparare quelle assurdità... eh invece! Ci sbagliavamo!

Andiamo con ordine...

Più specificamente un numero a virgola mobile a doppia precisione è composto da 64 bit come segue:
1 bit per il segno (positivo o negativo)11 bit per indicare l'esponente52 bit per indicare la parte significativa del dato L'unione di queste parti rappresenteranno il valore. PROBLEMA A differenza di tipi come byte char int long che sono rappresentati da una lunghezza fissa di bit (quindi molto precisi), i numeri rappresentati mediante virgola mobile double e float possono sbagliare i calcoli per il semplice fatto che non possono precisamente rappresentare l'esatto valore di un numero ma andarci molto vicino.

Questo è il motivo per cui se sommiamo due double del valore di 0.1 e 0.2 il risultato no…

Storia del cloud nel 2018

Immagine
INTRODUZIONE  Con l'avvento dei vari dispositivi all'interno delle nostre mura domestiche tutti noi ci scontriamo ogni giorno su un problema semplice e comune: condividere i file!

Fino a qualche tempo fa avere un sistema di memorizzazione centralizzata casalingo/aziendale era un vero e proprio sacro grall. Non sto parlando delle aziende informatiche o della famiglia con lo "smanettone" che prova soluzioni esoteriche per risolvere l'enigma.

Sto parlando degli "altri"... di quelli che "non masticano" tutto quello che è informatica.


FILE SHARING
Rimanendo un altro pò nell'era preistoica, ipotizziamo che arriva a casa un nostro amico con il suo computer portatile (3.5 Kg senza batteria) e ha l'estremo bisogno di stampare un file.

Non abbiamo nessun supporto sotto mano perché il dischetto da 1.44 MB non è abbastanza capiente e quindi? Come facciamo?

L'utente medio avrebbe detto "lo stampo e te lo porto domani" il più smanetto…

African Technology - progetti interessanti

Immagine
INTRODUZIONE L’Africa è il continente più antico dove ha avuto origine la vita dell’uomo. Eppure, la storia di questo complesso e contraddittorio pezzo di mondo è ancora oggi un argomento troppo spesso trascurato. Conosciamo bene i trascorsi dell'ampio periodo coloniale, con il successivo problema dello spopolamento, lo schiavismo e la spartizione delle terre. Ma nonostante tutto in questi anni ci sono realtà e comunità che creano ricchezza e innovazione.
In questo post volevo parlare di qualche esempio di African Technology
RUANDA - DRONEPORTO Il Ruanda è un Paese dell'Africa orientale senza sbocco sul mare con un paesaggio verdeggiante e montuoso. Qui l'architetto inglese Lord Norman Foster ha progettato una serie di droneporti da completare nel 2020. Il progetto mira a coprire il gap del tempo di trasporto in un paese dove le strade sono tutte non asfaltate e i tempi di trasporto sono molto lunghi.
La linea dei droni sarà formata da due tipologie:  - RedLine per le forn…

Wifi, IoT e Reti mesh

Immagine
INTRODUZIONE Ad alcuni potrebbe sembrare surreale parlare di reti mesh nel 2018, quando tutti e tutto è connesso ad internet. Invece proprio in questi periodi la comunità si sta muovendo per creare delle reti isolate sicure oppure semplicemente sfruttando i concetti per connettere i dispositivi più facilmente.
Sembra una "minestra riscaldata" perchè gli attori sono sempre i peer che formano una rete peer 2 peer e si parla sempre di distribuire le informazioni evitando di centralizzandole COME FUNZIONA Nelle reti mesh i peer sono tutti paritetici e hanno il compito di scambiarsi le informazioni e inoltrarli agli altri nodi. Le tecniche più comuni per l'invio del dato sono il routing e il flooding. Nel routing i nodi instradano l'informazione in maniera precisa, invece nel flooding esiste solamente la legge dell'"invio a tutti i nodi" basandosi sul principio che il destinatario riceverà l'informazione inviata.
Naturalmente utilizzare una tecnica di f…

Esecuzione parallela usando la GPU

Immagine
INTRODUZIONE
Le unità di elaborazione grafica (GPU) , o più popolarmente chiamate Schede Video, sono state sviluppate per far fronte alle elevate esigenze di prestazioni grafiche e di animazione. 
Hanno un'architettura diversa rispetto alle CPU, supportando al meglio operazioni in virgola mobile, concorrenza e memoria ad alta velocità di trasmissione dati. 
Oramai da diversi anni è stato riconosciuto che le GPU possono eseguire operazioni parallele di dati ad alta velocità. Di solito le GPU sono dedicate a compiti grafici come l'ombreggiatura dei pixel, o una combinazione di attività grafiche e di elaborazione, ma con l'avvento della "sete" di potenza da parte degli algoritmi di cifratura usati nel mondo delle cryptovalute, sono comparse GPU che fanno semplicemente calcolo. 

Solo in determinate GPU è possibile sviluppare del codice all'interno. Diverse architettue supportano diversi linguaggi. Per esempio le GPU NVIDIA sono compatibili con il sistema chiamat…

Rivoluzione 5G

Immagine
INTRODUZIONE 
5G e Internet of Things (IoT) sono spesso associate ognuna con aspetti differenti ma che li collegano strettamente. Da una parte l'IoT che abilita le "cose" a collegarsi alla rete, G5 invece permette standard di connessione mobile prima impensabili. Ci sono tutti gli ingredienti per far partire un'altra rivoluzione tecnologica.

Secondo studi di settore il 5G (in italia dal 2022) avrà un impatto diretto per i servizi su energia e utilities, manufactoring, sanità, trasporto pubblico, servizi finanziari, retail e agricoltura, sicurezza pubblica.

Nuovi standard significa nuovi dispositivi  Come accaduto in passato, con 3G e 4G, i primi a beneficiare del passaggio saranno i produttori di dispositivi. Qualcomm ha già dichiarato di essere pronta nel 2019 come Intel e vari concorrenti. Come anticipato la sfida non si giocherà solo su dispositivi mobili come cellulari o tablet, ma pure su PC e dispositivi smart.
Infatti 5G non racchiude solo il concetto di conn…

IPFS - InterPlanetary File System

Immagine
IPFS - InterPlanetary File System mira a semplificare la diffusione e l'utilizzo di una rete decentralizzata e sicura al fine di condividere / memorizzare file e documenti.

Usando IPFS i file vengono distribuiti in più nodi in maniera sicura così da dimenticare i fastidiosi e dispendiosi backup.



Inizialmente concepito da Juan Benet, IPFS è oggi un progetto opensource, sviluppato con l'aiuto della comunità ed è quindi sottratto al controllo diretto da parte di qualsiasi azienda.
Questo naturalmente non ne implica l'utilizzo anzi iniziano a nascere servizi basati su IPFS come quello di Cloudfare (vedi link), nota società statunitense che offre anche servizi CDN (content delivery network).
IPFS però è molto di più che un file sharing infatti è possibile condividere informazioni e creare siti web statici sfuggendo alla censura praticata da governi, società e altre organizzazioni. Inoltre, i contenuti pubblicati non possono essere rimossi se non dall'autore. 
Per caricare f…

Ethereum 2 - DFinity - Cardano - Komodo

Immagine
INTRODUZIONE Oggi come non mai abbiamo assistito ad una discesa e perdita di credibilità del progetto Ethereum. Facciamo un piccolo aggiornamento e vediamo che cosa sta accadendo nelle altre DAPP Platform. 
Ethereum 2.0Casper era l'aggiornamento tanto pubblicizzato quanto atteso perché permette di abbandonare l'argoritmo di consenso POW al fine di abbassare il consumo di risorse e nello stesso tempo incrementare le prestazioni in termini di transazioni al secondo.
In questi mesi l'ideatore sta lavorando molto anche per creare la struttura intermedia tra il nuovo Ethereum e il vecchio. In questi giorni ha pubblicato un demo funzionante della nuova infrastruttura.
Ricordo che Ethereum è stato il motore di avvio a tutto un settore, quello delle DApp, in forte crescita.
DFinity DFinity è una delle infrastrutture "copia" di Ethereum che ha raggiunto i 200 milioni di dollari di finanziamento.
DFinity propone un modello cloud decentralizzato che include un sistema di g…

EKON il Crypto Oro by Eidoo

Immagine
In questi mesi si è parlato molto sul reale utilizzo delle cryptovalute nel mondo reale. Inoltre nelle ultime settimane si è parlato molto dell'iniziativa della Start Up Eidoo che ha deciso di creare una "stable coin" legata all'oro.

Comprare quindi il token EKON significherà dare mandato alla startup, di anima italiana ma con sede in Svizzera, di comprare e custodire oro all'interno del proprio caveau. Ma esattamente come funziona Ekon token? Il token fa parte e viene scambiato all'interno della blockchain di Ethereum e replica con precisione al centesimo il prezzo dell'oro garantendo che ogni token sarà equivalente a un grammo d'oro fisico. Per rendere credibile la cosa, ogni 90 giorni, una società di revisione indipendente farà una verifica per certificare la quantità di lingotti presenti nel caveau.

Inoltre Eidoo garantisce la trasparenza mediante appositi comunicati. Come funziona tecnicamente e come si fa ad acquistare Ekon?Il tutto può essere fatto …

Java: Non solo List e Map

Immagine
INTRODUZIONE Java è un linguaggio di programmazione vecchio di 21 anni e nonostante ciò è sempre presente tra le principali classifiche del settore. Possiamo dire quindi che Java, grazie anche alle sue varie sfaccettature, non passa mai di moda!
Inoltre, notizia di qualche mese fa, Oracle ha deciso di rilasciarne una nuova versione ogni 6 mesi. 
Un pò troppo visto i trascorsi del linguaggio... vedremo!
Durante questi anni, i creatori di Java hanno messo a disposizione molte classi con funzionalità native che la maggior parte degli sviluppatori non conosce o non utilizza!
Vediamo di farne una veloce rassegna LIST Quando un programmatore pensa ad un elenco di record pensa ad un array o meglio, una lista!
Vediamo le implementazioni più conosciute ArrayList e LinkedList passando poi tra le altre (vedi java doc ver 8)  ArrayList Costruita su un array (inizialmente di 10 elementi) è la struttura dati più utilizzata non sapendo che a il 90% delle volte è più performante utilizzare LinkedLis…