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.

Alla ricerca del... launcher perfetto - Arrow Launcher

Arrow Launcher, sviluppato da Microsoft, è il launcher che vi voglio presentare oggi. Arrow presenta il classico stile Android, quindi troveremo il drawer delle applicazioni, in questo caso ordinato alfabeticamente e una schermata home; proprio quest'ultima è la feature principale che lo distingue dal launcher stock di Android. La home page è suddivisa in sei schermate App, Recenti, Persone, Widget, Promemoria e Documenti. Ciò riduce la personalizzazione della propria home ad una scelta tra queste pagine e in che ordine visualizzarle. Esaminiamo velocemente ogni pagina: App: ha due possibilità di visualizzazione, con la modalità personalizzata potremo aggiungere le app che desideriamo avere a portata di mano, mentre con la modalità automatica sarà il launcher a proporci le app in base all'utilizzo, un po come accadeva su Z Launcher, ma con risultati decisamente minori Recenti: mostra alcuni contenuti come messaggi, chiamate e foto recenti Widget: una schermata dove poter inserire i nostri widget Persone: visualizza i contatti recenti Promemoria: permette di gestire dei promemoria, pagina poco utile vista la presenza sul play store di milioni di app di questo genere Documenti: mostra tutti(o quasi) i documenti presenti sul nostro smartphone. Perchè quasi? A livello di gesture è presente il doppio tap per sospendere il dispositivo, inoltre effettuando uno swipe dal basso verso l'alto appariranno alcuni quick toggle, un opzione che risulta ridondante dato che sono sostanzialmente una selezione dei toggle presenti nella tendina delle notifiche. Potrebbe tornare utile se avete uno smartphone molto grande dove raggiungere la tendina delle notifiche risulta difficoltoso. Da menzionare la possibilità di impostare uno sfondo proveniente dalla galleria di Bing. Tirando le somme Arrow Launcher è un miscuglio di tante idee, più o meno riuscite e forse per questo quello che più gli manca è la semplicità e l'immediatezza nell'uso. Per questo motivo difficilmente riuscirà, almeno per ora, a fare quel salto di qualità necessario a portarlo all'eccellenza. Test effettuato con: LG G Flex 2 In definitiva il voto complessivo per Arrow Launcher è  6/10.

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.

L'angolo nerd app si aggiorna alla versione 1.0

A sei giorni dal lancio della prima versione pubblica, l'applicazione Android de L'angolo nerd si aggiorna alla versione 1.0 con importanti novità. La più interessante è sicuramente l'introduzione del servizio di notifica alla pubblicazione di nuovi articoli attraverso le Push Notifications, funzione che, attraverso la schermata di impostazioni raggiungibile dal menù a tendina, sarà poi possibile attivare o disattivare (attiva di default). Di seguito trovate il changelog completo riportante tutte le novità e le modifiche.   Changelog v1.0 Notifiche push Nuova voce Settings nel menù Rimossa dal menù la voce Privacy Policy Rimossi i cookie di profilazione presenti nel sito completo Rimosso il banner di notifica dei cookie Rimosse le pubblicità eccetto il banner sotto il titolo del singolo articolo Gestione dei link esterni (social links, sharing links ecc) Rimosse numerose dipendenze utili per il sito completo   N.B. Il caricamento iniziale, soprattutto al primo avvio, potrebbe essere sensibilmente più lungo. Questo è dovuto alla procedura di inizializzazione del servizio per le notifiche push, ma stiamo costantemente lavorando al miglioramento delle performance dell'app... abbiate pazienza! N.B.2 Nel caso in cui l'installazione dell'aggiornamento non dovesse andare a buon fine, la soluzione è disinstallare la versione precedente e installare la 1.0. Questo è dovuto a un probabile cambio di firma del file .apk.   DOWNLOAD cloud_download  

Alla ricerca del... launcher perfetto - Z Launcher

UPDATE:  Nokia ha recentemente comunicato la fine dello sviluppo di Z Launcher. Z Launcher,  è come suggerisce il nome, un launcher alternativo per Android, sviluppato da Nokia. Ho seguito il suo sviluppo dalla sua prima release e fin da subito mi ha colpito positivamente; considerando anche il fatto che tutt'ora si trova in stato di beta. L'approccio che propone Z launcher è rivoluzionario e molto smart. La home page è composta da una lista di sei applicazioni, che ci vengono proposte dal launcher. Grazie ad un algoritmo Z launcher imparerà dalle nostre abitudini e in ogni momento della giornata, quando sbloccheremo lo smartphone, cercherà di proporci le applicazioni che potrebbero servirci in quel preciso istante. E se per caso l'applicazione di cui abbiamo bisogno non si trova tra quelle della schermata principale? Nessun problema, ci viene incontro un'altra funzionalità di Z launcher, la scrittura a mano libera. Nella schermata principale sarà possibile scrivere una lettera, in modo da ricercare tutto quello che inizia con quella lettera, sia applicazioni sia contatti telefonici sia risultati di ricerca web. Vi assicuro che la comodità di cercare qualcosa con questo metodo è sbalorditiva, tant'è che inizierete a voler cercare le cose all'interno della vostra stanza semplicemente scrivendo una lettera. Inoltre i risultati della ricerca non ci vengono proposti a caso, bensì saranno ordinati secondo quello che il launcher pensa potreste aver bisogno, e ci azzecca quasi sempre. Nelle rarissime occasioni in cui non avrete trovato il risultato corretto scrivendo una sola lettera potrete scriverne una seconda e nell 99,99% dei casi troverete il risultato che vi aspettate. Abbiamo parlato di funzioni innovative, ma un utente Android si starà chiedendo "e i widget?" Ovviamente in Nokia hanno pensato anche a questo aspetto, facendo uno swipe da sinistra a destra si trova una pagina configurabile con tutti i nostri widget. Per molti una pagina sola potrebbe sembrare poco ma personalmente la trovo sufficiente. Inoltre un widget è presente anche nella schermata principale dove ci vengono mostrata ora e prossimi appuntamenti dal nostro calendario.  Con uno swipe da destra a sinistra, nella schermata iniziale, troveremo  il drawer delle applicazioni, ordinato alfabeticamente, anche'esso comodo ma non particolarmente utile, viste le funzioni citate sopra. Considerando che è una versione beta, ma tenendo conto che lo sviluppo dura ormai da due anni e mezzo alcune problematiche riguardanti le prestazioni non sono trascurabili. Alcune volte infatti il sistema non appare fluido, per esempio nella ricerca, o in alcune animazioni. Spesso uscendo da applicazioni pesanti, come i giochi, dovremo aspettare alcuni secondi prima che la lista delle applicazioni venga ricaricata.  Nelle passate versioni era anche presento un sostanzioso battery drain, che attualmente sembra essere stato eliminato quindi la speranza di un miglioramento delle prestazioni non è certamente mal riposta. Le possibilità di personalizzazione sono sicuramente meno ampie rispetto ad altri launcher, si limitano infatti alla grandezza delle icone e al tema delle stesse. Per questo motivo i più affezionati allo "stile classico" si potrebbero trovare a disagio e poter voler tornare indietro. Ma vi assicuro che avrete sempre nostalgia di Z Launcher e della sua intuitività nell'uso. Potete scaricare Z Launcher da qui: https://play.google.com/store/apps/details?id=com.nokia.z Test effettuato con: LG G Flex 2 In definitiva il voto complessivo per Z Launcher è di 9/10.