home Ricerca per tag "siamofatticosi"


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.

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.

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].

Apache e gli URL "SEO Friendly"

Per SEO, Search Engine Optimization, si intende un insieme di operazioni volte a migliorare la visibilità di un sito web sui motori di ricerca, con conseguente aumento di visualizzazioni e visite. Tra queste una delle attività più importanti è quella nota come URL Optimization, che consiste nel costruire i link delle pagine del sito in modo da risultare più leggibili e contenere qualche informazione sul contenuto della pagina stessa. Solitamente i CMS più diffusi offrono questa funzionalità out of the box. Wordpress ad esempio, come impostazione predefinita, genera link del tipo dominio/anno/mese/titolo-articolo, ma come possiamo modificarne la struttura a piacimento? E se il nostro sito non si appoggiasse ad un CMS? Ed è qui che entra in gioco Apache.   Apache HTTP Server è la piattaforma server web più diffusa, perchè in grado di operare su una grande varietà di macchine e sistemi operativi e perchè modulare, vale a dire che a seconda delle necessità è possibile caricare o meno diversi moduli della piattaforma. Tra questi ci viene in aiuto mod_rewrite, che permette di riscrivere l'url delle pagine del nostro sito. Per default questo modulo mappa un URL in un percorso sul filesystem, vale a dire che dominio/foo/bar.php indirizzerà al file bar.php contenuto nella cartella foo, ma permette anche di reindirizzare determinati URL ad altri. Questo può essere effettuato attraverso delle direttive impartite modificando il file httpd.conf (file di configurazione di Apache, solitamente non modificabile) oppure il file .htaccess presente nella root del sito web.   Tornando un attimo al SEO, l'ottimizzazione dei link deve essere effettuata tenendo conto di alcune regole base quali Evitare l'uso di query string, quali articolo.php?idarticolo=1234 Evitare link più lunghi di 250 caratteri Inserire negli indirizzi alcune informazioni sul contenuto della pagina, quali titolo, categoria o tag Nel momento in cui si progetta un sito web dinamico, i cui contenuti vengono salvati in un database, però, risulta praticamente impossibile non utilizzare le query string (quindi l'identificazione di una risorsa specifica esclusivamente attraverso parametri GET), con l'obiettivo di scrivere solo una pagina che faccia da template e che verrà popolata dal contenuto dei vari articoli. Facendo un esempio pratico, L'angolo nerd per la gestione degli articoli ha proprio una struttura di questo tipo: una pagina post.php a cui vengono passati i parametri per recuperare l'articolo corretto dal database. Come abbiamo appena visto questo non è l'approccio migliore se si tiene al proprio ranking sui motori di ricerca, quindi abbiamo utilizzato il modulo rewrite di Apache per rimappare gli URL degli articoli, in modo da avere una struttura del tipo /post/id/titolo-articolo. Per farlo è stato modificato il file .htaccess in questo modo RewriteEngine OnRewriteBase / RewriteRule ^post/([0-9]+)/[A-Za-z0-9\-\.]+/?$ post.php?id=$1 [NC,L] In particolare è necessario abilitare il rewrite attraverso il comando RewriteEngine On e poi aggiungere la regola per il mapping desiderato. La sintassi è del tipo RewriteRule pattern$ target [flags]. Il pattern inizia sempre per ^, che sta a significare la nostra webroot (www.langolonerd.it/), si conclude con $ e accetta le espressioni regolari (regex). Nel nostro caso le due regex presenti sono ([0-9]+), che sta a significare una serie di caratteri numerici non nulla, e [A-Za-z0-9\-\.]+, vale a dire una serie di caratteri alfanumerici non nulla con l'aggiunta di caratteri speciali come - e . . Il target riporta il link "reale", quello che PHP dovrà considerare per ottenere le informazioni relative a quell'articolo, a cui viene passato il parametro $1, vale a dire il "risultato" della prima espressione regolare contenuta nel pattern. Per quanto riguarda i flag abbiamo usato NC per un matching case insensitive e L per specificare al modulo Rewrite di fermarsi e non processare altre regole ogni volta che questa viene soddisfatta.    In questo modo i link agli articoli risulteranno più leggibili e più sensati, sia per gli esseri umani che per un "robot" come il Search Engine che, si spera, sarà più contento.

Android e le notifiche push con Firebase

Firebase Cloud Messaging (FCM), successore di Google Cloud Messaging GCM, è un servizio che offre una soluzione alla messaggistica istantanea multipiattaforma. Offerto da Google permette, oltre alla gestione di cloud database, piattaforme di testing, crash reporting e autenticazione, di inviare messaggi push in modo del tutto gratuito e illimitato. Vediamo quindi come utilizzare FCM per implementare le notifiche push in un sistema composto da un server PHP e un'applicazione Android. Per quanto riguarda il lato applicazione, Android Studio ci viene in aiuto integrando la piattaforma Firebase (raggiungibile da Tools > Firebase) e con pochi click potremo connettere l'app al servizio e inserire le dipendenze mancanti nel nostro progetto. Sarà infatti sufficiente specificare le dipendenze per la compilazione nei due file build.gradle, importare com.google.firebase.iid.FirebaseInstanceId nella classe in cui andremo ad utilizzarlo e inserire il file google-services.json - che possiamo reperire dalla console di Firebase - sotto app/ .   A questo punto la configurazione dell'applicazione è terminata e il token identificativo di registrazione al servizio sarà raggiungibile attraverso la chiamata al metodo FirebaseInstanceId.getInstance().getToken(). Possiamo verificare il corretto funzionamento direttamente dal pannello di Firebase, dove, nella pagina Notifications, potremo creare manualmente delle notifiche da inviare alla nostra applicazione.   Per quanto riguarda invece la configurazione lato server, utile per automatizzare l'invio delle push in determinate occorrenze, come potrebbe essere la pubblicazione di un nuovo articolo, avremo bisogno di uno script in PHP che, prese in input la chiave per le API lato server e i token delle applicazioni, invii la notifica. Innanzitutto dovremo ottenere la API key per il server, che possiamo trovare nel pannello di gestione delle API di Google. Dovrebbero esserci tre chiavi con la dicitura (auto created by Google Service) tra cui anche la Server Key.   Il codice seguente permette di generare una notifica e "spedirla" all'applicazione specificando $title e $body come titolo e contenuto della stessa: $msg = array(    'body' => $body,    'title' => $title,    'vibrate' => 1,    'sound' => 1,);$fields = array(    'registration_ids' => $registrationIds,    'notification' => $msg);$headers = array(    'Authorization: key=' . API_ACCESS_KEY,    'Content-Type: application/json');$ch = curl_init();curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );curl_setopt( $ch,CURLOPT_POST, true );curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );$result = curl_exec($ch );curl_close( $ch );return $result; Dove API_ACCESS_KEY è la Server Key e $registrationIds sarà un array di stringhe contenente i token delle applicazioni registrate. Per completare la procedura e renderla funzionante manca soltanto la gestione dei token. Per farlo sarà necessario salvare nel database del server tutti i codici delle applicazioni registrate, che avremo ottenuto attraverso il metodo getToken() citato all'inizio. Sarà quindi sufficiente, lato applicazione, chiamare questo metodo ed inviare il token al server attraverso una richiesta GET o PUSH, che provvederà poi a salvarlo nel database e recuperarlo all'occorrenza per popolare $registrationIds.

Newsletter: come rimanere sempre aggiornati

Ormai quasi tutti i siti web e blog che si rispettino lo offrono e di certo L'angolo nerd non poteva non vantare di questo servizio. Sto parlando della newsletter, un servizio che permette di inviare a tutti gli iscritti delle notifiche via email, solitamente alla pubblicazione di nuovi contenuti o con cadenze precise riportando le notizie più rilevanti (ad esempio settimanale o mensile). Attualmente questo servizio su L'angolo nerd è limitato alla notifica al momento della pubblicazione di ogni nuovo articolo ed è in costante perfezionamento, con la particolarità che è stato progettato per memorizzare meno dati personali possibili: viene infatti richesto soltanto l'inserimento dell'indirizzo email. L'iscrizione è semplicissima, basterà infatti inserire l'email nel form che potete trovare in fondo ad ogni pagina del sito (quello che vedete riportato in foto) e dal successivo articolo riceverete la notifica all'indirizzo specificato. Ogni volta che viene pubblicato un articolo viene infatti richiamata una funzione PHP che provvede a compilare il template dell'email e ad inviarla ad ogni email registrata nel database. Per ora si tratta semplicemente della classica funzione mail(): $headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";$headers .= "From: postmaster@langolonerd.it" . "\r\n" .mail($email, "Nuovo articolo disponibile | L'angolo nerd", $text, $headers);  Dove $email contiene l'indirizzo di destinazione e $text il template delle email compilato con i dati relativi al nuovo articolo. Questa funzione è però tanto semplice quanto limitata, in quanto non permette ad esempio di raccogliere statistiche o, cosa molto più importante, di garantire che ogni client email riesca a visualizzare correttamente il contenuto dell'email. Proprio per questo motivo in futuro potremmo decidere di appoggiarci a servizi come MailChimp o simili, che permettono di configurare la newsletter in modo da gestire liste di iscritti differenziate così come diversi template, nonchè l'invio di email cumulative in stile "Ecco cosa ti sei perso!" e la reportistica completa sulle newsletter inviate, ma in ogni caso verrete avvisati per qualsiasi modifica delle condizioni. Per concludere, nel caso in cui vi siate iscritti ma non voleste più ricevere alcuna email sarà sufficiente seguire il link che trovate in fondo all'email per cancellarvi definitivamente, con la consapevolezza che i vostri dati verranno realmente rimossi dal nostro database, non semplicemente "nascosti".