home Generale


JSE Coin, l'alternativa a Google AdSense

Google AdSense è probabilmente il servizio di remunerazione più noto nell'ambito dell'online publishing. Permette infatti di generare banner pubblicitari da mostrare sul proprio sito, in cambio di piccoli compensi derivati da visualizzazioni e click dei banner stessi. L'angolo nerd adotta questo servizio da diversi mesi, ma si è rivelato essere molto meno profittevole delle aspettative, portando introiti decisamente inferiori rispetto ai costi di mantenimento del sito stesso. Insomma, a meno di non avere almeno più di visitatori al giorno, AdSense non risulta conveniente, soprattutto se si considerano i rallentamenti nella navigazione dovuti al caricamento dei banner pubblicitari offerti da Google. Ma potrebbe esserci una soluzione, un'alternativa ad AdSense e altri circuiti pubblicitari che soffrono delle stesse problematiche, in grado di generare dei profitti senza compromettere l'esperienza utente. JSE Coin è una criptovaluta nata proprio per i webmaster ed è scritta totalmente in JavaScript per permetterne la rapida integrazione con tutti i siti web. L'idea è infatti quella di far eseguire i processi di hashing ai PC dei visitatori durante la loro permanenza sul sito web attraverso uno script caricato dal browser, tutto questo sempre nel rispetto dell'utente. Il mining infatti viene effettuato utilizzando pochissime risorse, tanto da rendere il processo impercettibile in termini di rallentamenti e lag [1]. Inoltre lo script fornisce un banner di notifica che mette a conoscenza l'utente riguardo all'utilizzo di questa tecnologia, permettendogli di disabilitarla (per maggiori informazioni a riguardo vi rimando alla pagina sulla privacy del sito ufficiale). Ma torniamo un attimo ai JSE Coin... quanto valgono? Attualmente, nulla. Più precisamente si tratta di una nuova criptovaluta, lanciata pubblicamente due mesi fa e non ancora quotata in borsa, pertanto le è stato assegnato un valore simbolico di 1$ e, ora come ora, non può nè essere salvata in un portafoglio virtuale, nè scambiata con altre valute, quali possono essere i Bitcoin o i Dollari. L'ingresso sul mercato dei JSE Coin è previsto per metà 2018 in occasione di una ICO (Initial Coin Offering). Attualmente stiamo testando questa nuova tecnologia ed è possibile verificare il corretto funzionamento dello script dalla console del browser, raggiungibile con Ctrl + Shift + J su Chrome e con Ctrl + Shift + K su Firefox (o, in ogni caso con tasto destro > analizza elemento > scheda "Console"). In ogni caso non esitate a contattarci nel caso in cui notiate rallentamenti, lag o impuntamenti del browser durante la navigazione. Per qualsiasi altra informazione a riguardo vi rimando al sito ufficiale di JSE Coin. [1] Un punto a favore di JSE è che, a differenza di altri script miner come il famoso CoinHive, non utilizza il 100% della CPU del computer, ma solo una minima parte. In questo modo l'esperienza utente non viene compromessa, risultando quasi invisibile agli occhi del lettore.

I Bitcoin spiegati a mio padre - la crittografia

Nello scorso articolo abbiamo parlato dell'aspetto economico e della definizione dei Bitcoin in quanto moneta virtuale. Oggi invece andremo ad analizzarne l'aspetto crittografico. L’uso della crittografia risulta essere di importanza cruciale nel sistema Bitcoin; essa è usata per celare l’identità degli utenti della rete grazie alle funzioni Hash, per garantire che il denaro di un portafoglio sia speso solo dal legittimo proprietario, grazie ad uno schema di firma digitale chiamato Algoritmo di Firma Digitale su Curve Ellittiche (ECDSA), o impedire l'alterazione della Block Chain, cioè il registro generale di tutti le transazioni economiche effettuate. Funzioni crittografiche Hash Una funzione crittografica Hash è una funzione H che, dato in input una stringa m di lunghezza arbitraria (potenzialmente infinita), restituisce in output un messaggio H(m) di lunghezza predefinita chiamato digest. La lunghezza del digest è definita dall’algoritmo Hash usato, per esempio, nel sistema Bitcoin vengono utilizzate due funzioni, SHA256 e RIPEMD160 che, rispettivamente, restituiscono un output di 256 bit e 160 bit. Di seguito un esempio dell’output delle due funzioni in formato esadecimale. Ricordiamo che un carattere esadecimale è grande 4 bit, quindi le stringhe in output saranno lunghe rispettivamente 64 e 40 caratteri SHA256(‘Bitcoin’) = B4056DF6691F8DC72E56302DDAD345D65FEAD3EAD9299609A826E2344EB63AA4RIPEMD160(‘Bitcoin’) = 4C9F77AB9E5EEF487C2C0AE07029E79B2CA11A68 Proprietà le funzioni crittografiche Hash: Dato un messaggio m, deve essere impossibile risalire al messaggio originario m dall’output di H(m). Inoltre, deve essere facile e veloce per un calcolatore calcolare l’Hash del messaggio. Dato un messaggio Y deve essere computazionalmente impossibile[ 1 ] trovare un messaggio X tale che H(X) = Y. Proviamo a spiegarlo meglio: ipotizziamo ci sia un messaggio M, il cui Hash sia Y e quindi H(M)=Y. Quello che sottolinea il punto 2 è che deve essere difficile trovare un secondo messaggio X il cui Hash sia uguale a Y. Deve essere computazionalmente impossibile trovare due messaggi m1 e m2 diversi fra loro con H(m1) = H(m2). Dato che il digest ha una lunghezza finita, ci si aspetta che messaggi diversi possano avere Hash uguali. Quello che evidenzia questa proprietà, è che deve essere difficile trovare questi due messaggi m1 e m2, ovviamente più è grande l’output di un Hash, più è difficile che ciò si verifichi.  La differenza dal punto 2 sta nel fatto che in questo caso i due messaggi sono stati scelti da noi. Questo implica che se riuscissi a "violare" questa proprietà, potrei per esempio spacciarmi per un altro utente e usare il suo denaro. Vediamo ora un altro esempio: SHA256(’Bitcoin’) = B4056DF6691F8DC72E56302DDAD345D65FEAD3EAD9299609A826E2344EB63AA4SHA256(’bitcoin’) = 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b Come si può notare, una minima variazione nel messaggio iniziale produce un cambiamento radicale nell’Hash ottenuto in output. Perchè questo esempio? Le funzioni Hash vengono usate anche per verificare la correttezza di un messaggio. Infatti inserendo in input la medesima stringa, si avrà sempre il medesimo output. Come riportato dalla guida di Ubuntu, Quando si effettua il download di Ubuntu da internet, c'è la possibilità che il file non venga scaricato nel modo corretto e presenti degli errori. Questi errori possono compromettere la stabilità e/o il funzionamento di Ubuntu. Il programma md5sum è progettato per verificare l'integrità e l'autenticità dei dati usando l'hash crittografica a 128 bit MD5. Infatti, una volta scaricata la iso e il file MD5SUMS contenente l'Hash ufficiale, basterà ricalcolare l'Hash e confrontarlo. Digitando nel terminale il comando  md5sum -c MD5SUMS | grep ubuntu-14.04-desktop-amd64.iso, se non ci sono errori verrà restituito il messaggio: ubuntu-14.04-desktop-amd64.iso: OK Quando un utente effettua un pagamento, viene creata una transazione nel sistema dei Bitcoin. Data l’assenza di un ente centrale, come una banca, a fare da garante, la transazione deve essere verificata sei volte, cioè bisogna verificare che il mittente abbia effettivamente quella somma di denaro. La verifica avviene aggiungendo un nuovo blocco nella Block Chain, il quale conterrà la firma digitale del Hash della transazione precedente. In questo modo chi riceve il pagamento può controllare i diversi passaggi di proprietà della moneta trasferita verificando le firme presenti in ogni transazione. La modifica di una transazione non è quindi possibile poichè gli Hash non corrisponderebbero più. Crittografia asimmetrica La crittografia asimmetrica, conosciuta anche come crittografia a chiave pubblica e privata, è un tipo di crittografia dove ad ogni attore coinvolto nella comunicazione è associata una coppia di chiavi: una chiave pubblica, che può essere diffusa pubblicamente, ed una privata, che deve essere tenuta assolutamente nascosta. La caratteristica principale è che solo ciò che viene cifrato con la chiave pubblica può essere decifrato con la chiave privata associata, e viceversa. Ipotizziamo che Alice voglia mandare un messaggio a Bob. Lei userà la chiave pubblica di Bob Kpub, e genererà il messaggio cifrato. Quando Bob riceverà il messaggio cifrato, userà la sua chiave privata Kpriv per scoprire il contenuto del messaggio. Se C è quindi il messaggio cifrato, ed M il messaggio originale, risulta: C = encrypt(M, Kpub)M = decrypt(C, Kpriv) Firma digitale Con Firma Digitale si intende un mezzo che, grazie alla crittografia asimmetrica, consente di dimostrare l’autenticità di un messaggio. Come una firma su carta, una firma digitale per essere tale deve soddisfare le seguenti caratteristiche: Autenticità: il destinatario di un messaggio firmato può verificare che il messaggio non sia stato inviato da un’altra persona. Integrità: il messaggio non è stato manomesso. Non ripudiabilità: una volta inviato il messaggio, non si può negare di averlo fatto. Per quanto riguarda il sistema Bitcoin, per evitare che durante una transazione si subisca una frode viene eseguito questo algoritmo: Per inviare un messaggio firmato M: Si esegue l’Hash del messaggio: H = SHA256(M) Si cifra H con la chiave privata, per ottenere la firma: S = encrypt(H, Kpriv) Si invia la firma S insieme al messaggio M. Per verificare che la firma S sia valida per il messaggio M: Si esegue l’Hash del messaggio M: H = SHA256(M) Si decifra S con la chiave pubblica: H’ = decrypt(S, Kpub) Si verifica che H = H’. Se risultano uguali la firma è valida. Attacco a collisione Un attacco a collisione è un tipo di attacco in cui si cercano due messaggi in input, i quali producono lo stesso Hash in output. Come già sottolineato, è possibile che questo evento si verifichi, data la lunghezza finita dell'output delle funzioni Hash. Quando ciò si verifica, si dice che si ha una collisione. Quindi se un attaccante riuscisse a generare volutamente un indirizzo uguale a quello di un altro utente, l'attaccante potrebbe spendere il denaro dell'utente col medesimo indirizzo. Tuttavia ciò risulta essere computazionalmente improbabile. Infatti, per creare una collisione, significherebbe calcolare in media, 2^(160/2) valori Hash (ipotizzando un Hash di 160bit). Ad oggi, per calcolare tutti i possibili valori, si impiegherebbe un tempo troppo lungo (migliaia di anni). Lo scopo di questo articolo è stato quello di darvi alcune nozioni base che vi permetteranno più avanti di capire le fondamenta su cui sono stati costruiti i Bitcoin. La Crittografia è un mondo assai ampio e complesso, il quale non può essere riassunto in così poche righe. [1] Una serie di operazioni vengono definite computazionalmente impossibili o intrattabili quando per eseguirle è necessario un tempo lunghissimo (centinaia di anni) utilizzando il super computer più veloce attualmente esistente. Fonte: Introduction to Cryptography with Coding Theory

I Bitcoin spiegati a mio padre - la moneta virtuale

“Il Bitcoin è una valuta virtuale bla bla bla...“. Su internet si trovano moltissimi articoli sui Bitcoin, la maggior parte dei quali inizia più o meno così, che cercano di riassumere un argomento molto ampio in poche righe. Così ho deciso di creare la rubrica “I Bitcoin spiegati a mio padre”, il cui scopo è cercare di spiegare il mondo che ci sta dietro in modo chiaro ed esaustivo.Tornando alla definizione iniziale, per capire cosa sono i Bitcoin, dobbiamo capire cos’è la moneta virtuale, e quindi: cos’è la moneta virtuale? È una forma di denaro digitale. E cos’è il denaro digitale? Il denaro digitale è un tipo di moneta elettronica che esiste solo online. Ma allora cos’è il la moneta elettronica? (questa Matrioska pare non finire più...) La moneta elettronica Ok, finalmente abbiamo risalito la corrente e quindi, per capire qualcosa in più, partiamo dalla sua definizione tecnica; la Commissione europea definisce così la moneta o denaro elettronico (in inglese e-money): “Un valore monetario rappresentato da un credito nei confronti dell'emittente che sia memorizzato su un dispositivo elettronico, emesso previa ricezione di fondi di valore non inferiore al valore monetario emesso e accettato come mezzo di pagamento da soggetti diversi dall'emittente” che, detto in parole povere, è “l'equivalente in forma digitale del denaro contante, memorizzato su un dispositivo elettronico” Un esempio tipico di moneta elettronica è il portafoglio elettronico (chiamato anche Smart Card o Carta prepagata), tramite il quale è possibile eseguire piccoli pagamenti usando un account personale ad esso associato. Il portafoglio elettronico consente ad un individuo di eseguire transazioni monetarie (online o in un negozio fisico) tramite l'uso di dispositivi elettronici, come computer o smartphone o carte elettroniche. Di portafoglio ne esistono due tipologie: device-based: attraverso l'utilizzo di dispositivi elettronici dotati di tecnologia Near Field Communication (NFC), presente anche su alcuni smartphone, si può eseguire una transazione in modo molto semplice: appoggiando il device su un lettore si effettua il pagamento. internet-based: concede all'utente la possibilità di creare un proprio profilo a cui associare uno o più strumenti di pagamento come carte di credito o conti correnti bancari. Per effettuare un acquisto online basterà accedere con le credenziali del proprio profilo, senza dover fornire i dati della carta al sito e-commerce. PayPal o Google Wallet ne sono due classici esempi. Torniamo al denaro digitale... Abbiamo detto che il denaro digitale è una forma di denaro elettronico, quindi un mezzo tramite il quale possiamo effettuare pagamenti online. Ma allora perchè chiamare in modo differente la stessa cosa? Perchè una differenza c’è: mentre il denaro elettronico si basa sul fatto che la cifra presente sulla carta prepagata corrisponde a quanto versato in banca, e che quindi al pagamento o alla ricezione di denaro il capitale viene aggiornato, il denaro digitale invece è una forma di pagamento che sostituisce le normali banconote, e che può essere utilizzato per eseguire transazioni solo su internet. Di fatto, non esiste la corrispettiva valuta fisica. Una delle prime società ad usare la moneta digitale è stata la E-gold, fondata nel 1996 e che faceva uso del Digital gold currency (DGC), una forma di valuta privata, e quindi indipendente dalle agenzie governative, basata sui metalli preziosi. La sua caratteristica stava nel fatto che, a differenza di una moneta cartacea nazionale soggetta ad inflazione, un grammo di oro digitale aveva lo stesso valore in tutti i paesi del mondo in quanto l'oro è universalmente accettato in base al peso, non importa da quale fonte provenga. Un altro esempio è stata Liberty Reserve, fondata nel 2006, le cui valute erano il Liberty Reserve Dollars e il Liberty Reserve Euro, avente il loro equivalente in Dollaro(USD) e Euro(EUR). Entrambe furono chiuse dal governo degli Stati Uniti per riciclaggio di denaro. La valuta virtuale Rimane però un problema: gli esempi appena descritti, nonostante fossero già qualcosa di più astratto rispetto ad una classica valuta nazionale, si basavano su qualcosa di materiale come l’oro, mentre, per quanto riguarda la valuta virtuale, la storia è diversa, in quanto a conti fatti si tratta solo di un insieme di numeri senza una tangibilità.Ma andiamo con ordine: le valute virtuali appartengono alla categoria delle monete digitali, quindi valute create e controllate da un team di sviluppatori indipendenti ed sono utilizzate tra membri di una specifica comunità virtuale. Queste valute non hanno nessun vincolo giurisdizionale, perchè non hanno legami con una Banca Centrale o Enti pubblici ma possono essere legalmente accettate tra tutte le persone che decidono di usarle come mezzo di pagamento.Esse possono essere generate, immagazzinate o scambiate elettronicamente, il tutto senza il bisogno di organi che facciano da tramite. Al mondo ne esistono una quantità enorme, ma sono quasi un centinaio quelle con un reale utilizzo, tutte sviluppate da team differenti e con obbiettivi e caratteristiche differenti, se non per una cosa in comune: tutte usano un sistema crittografico, sia per la generazione che per la transazione delle stesse. Per questo vengono chiamate criptovalute. Al tempo stesso però sono valute pubbliche, in quanto il codice sorgente è presente su GitHub, e chiunque può analizzarne il contenuto alla ricerca di falle o di possibili raggiri, o, perchè no, forkarne il progetto per crearne una valuta nuova. La prima ad aver preso piede, nonchè la più famosa è il Bitcoin. Per ora è tutto. Per scoprire tutto sulla storia del Bitcoin, come viene generato e perchè funziona, non vi resta che aspettare il prossimo articolo. Alla prossima.

L'angolo nerd: che fine ha fatto l'app?

Sono passati circa due mesi e mezzo dall'ultimo rilascio dell'applicazione de L'angolo nerd e da quel momento non vi abbiamo più aggiornati sullo sviluppo. Senza considerare il mese di febbraio che è stato per tutti noi molto impegnato e che ci ha costretti a sospendere temporaneamente questo progetto, lo sviluppo dell'applicazione non si è però mai fermato ed anzi, ha visto diverse svolte importanti. Inizialmente l'idea era infatti di sviluppare un'app "ibrida" utilizzando PhoneGap, un framework che permette di scrivere applicazioni in Javascript e HTML5 per poi incapsularle in un "guscio" nativo, in modo da poter essere installata sui dispositivi mobili. Scartata quasi subito, abbiamo iniziato a lavorare su due progetti contemporaneamente, entrambi sviluppati nativamente per Android. Il primo ha portato all'applicazione che attualmente potete scaricare dal sito e che sfrutta molto semplicemente una WebView per mostrare i contenuti del sito mobile, con l'aggiunta di piccole funzionalità come le notifiche push e la gestione dei link. Il secondo progetto, più ambizioso, contava invece di sviluppare un'app completamente nativa, senza utilizzare contenuti scaricati dal web ma mostrando i dati interrogando il server attraverso delle "mini API". Circa un paio di settimane fa Niccolò ha proposto di riscriverla utilizzando React Native, un framework basato su React JS di cui vi abbiamo parlato qualche giorno fa. Abbiamo quindi abbandonato tutti i precedenti progetti per buttarci su quest'ultimo - quasi - a tempo pieno e ad oggi mancano un paio di bug da correggere e altrettante funzionalità da implementare, tra cui il filtro degli articoli per categoria (come potete vedere nel video qui sopra, attualmente non funzionante), per rilasciare la prima versione dell'applicazione. Per gestire il progetto abbiamo deciso di utilizzare una linea di sviluppo un po' più strutturata rispetto al nostro solito (hacker veri!). In primis il tutto è hostato su GitHub e i sorgenti sono disponibili al pubblico a questo indirizzo. Git permette di sviluppare in team e su diversi "rami" in maniera autonoma e per una migliore organizzazione abbiamo utilizzato Git Flow, che ci permette di separare l'implementazione delle varie feature e i fix dei vari bug, di cui teniamo traccia attraverso il servizio di bug tracking offerto sempre da GitHub. Per quanto riguarda lo sviluppo vero e proprio invece, che come abbiamo detto è basato su React Native, abbiamo deciso di sperimentare con Expo, un tool che permette di scrivere applicazioni per iOS e Android senza scrivere codice nativo nè toccare Android Studio o Xcode. Grazie all'applicazione di supporto è infatti possibile testare e debuggare il progetto senza passare per build, file APK/IPA e push del compilato sul dispositivo/emulatore - fico! Chi volesse quindi provare l'applicazione prima del rilascio ufficiale dovrà passare per Expo, seguendo le istruzioni presenti nel README del repository.

L'angolo nerd sbarca su Instagram

Il team de L'angolo nerd è lieto di annunciare la creazione della nuova pagina Instagram. Oltre a poter seguire le news potrete trovare anche alcune chicche. Ovviamente per una "piccola realtà" come la nostra il mondo dei social non è solo utile, ma praticamente indispensabile. Sia per farsi conoscere presso nuovi utenti sia per mantenere costante il rapporto con chi già ci segue. Ecco perchè l'idea di inserire un nuovo social oltre ai già presenti, Facebook, Twitter e Google+. Non escludiamo la possibilà di approdare anche su altri social, ma per ora riteniamo che l'offerta sia abbastanza completa. Quindi cosa aspettate, seguiteci anche su Instagram!

Sitemap dinamica: cos'è e come generarla

La Sitemap non è altro che un file contenente la lista di tutte le pagine di un sito web e viene utilizzata per comunicarne l'organizzazione dei propri contenuti ai motori di ricerca. Per loro natura i crawler, software specializzati nell'analisi e raccolta di informazioni dei contenuti web, organizzano i dati in modo automatico e questo permette di poter raggiungere i contenuti online dai risultati di una ricerca sui vari Search Engine. Può capitare però che non appaia tutto ciò che vorremmo del nostro sito o che venga data una priorità maggiore a contenuti meno importanti. Occorre quindi "dare una spinta" ai motori di ricerca, fornendo loro una mappa dei contenuti e dei metadati associati, come la data dell'ultimo aggiornamento, la frequenza con cui la pagina viene modificata e l'importanza della pagina rispetto agli altri URL del sito. L'obiettivo quindi è quello di generare una Sitemap dinamica, in modo che, man mano che vengono aggiunti conenuti al sito web, questi appaiano anche nella mappa. Tale procedimento risulta necessario nel caso in cui non ci si appoggi a CMS e sistemi di gestione preesistenti, con i quali invece viene solitamente costruita in modo automatico. La Sitemap standard e accettata da tutti i motori di ricerca è tipicamente in formato XML e segue uno schema simile <?xml version="1.0" encoding="UTF-8"?> // Versione e codifica <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> // Schema <url> // Struttura dei link <loc>URL_PAGINA</loc> <lastmod>DATA_ULTIMA_MODIFICA</lastmod> // Altri parametri opzionali </url> // ... </urlset> Affinchè sia dinamica dovremo servirci di PHP per recuperare le informazioni delle pagine e degli articoli e stamparle come visto sopra, con qualche accortezza: la definizione degli header della pagina, effettuata attraverso il comando header('Content-Type: text/xml');, deve trovarsi in testa al file .php anche la definizione della versione di XML e la codifica usata, così come l'apertura del tag urlset devono trovarsi in cima alla pagina, appena sotto la funzione header Solo dopo questi tre elementi potremo scrivere il codice necessario per ottenere i link dal database  Il codice completo per la Sitemap de L'angolo nerd risulta essere quindi il seguente:   L'ultimo passaggio è quello di reindirizzare sitemap.xml al nostro file PHP, che può essere fatto attraverso una RevriteRule - vista nell'articolo precendente - dal file .htaccess in questo modo: RewriteRule ^sitemap.xml ./sitemap.php [L].