I regali di Natale 2017 selezionati da EasyApple

Natale sta arrivando, e abbiamo pensato di compilare una piccola lista dei prodotti tecnologici e non che ci hanno convinti di più nell’ultimo anno.

Sono tutti prodotti che trovate su Amazon, così potrete acquistare con tranquillità grazie all’impeccabile assistenza e politica di reso, e nel contempo supportare il nostro lavoro grazie al link affiliato.

Ci teniamo a sottolineare che abbiamo noi stessi acquistato tutti questi prodotti, che possono quindi fregiarsi del prestigioso Sigillo di Approvazione di EasyApple.

P.S.: Abbiamo parlato brevemente di ciascuno di essi nella seconda metà della puntata 338 di EasyApple, se avete bisogno di qualche info in più.

Leggi tutto “I regali di Natale 2017 selezionati da EasyApple”

Come risparmiare 50 euro con Satispay e Amazon

Scusate il titolo dal sapore da “clickbait”, ma in realtà è esattamente quello di cui si tratta.

Non hai voglia di leggere? Ascolta (in anteprima!) l’estratto della puntata di EasyApple.

Già in passato vi avevamo parlato su EasyApple dell’app Satispay, per scambiarsi pagamenti in modo gratuito direttamente da smartphone, oggi vi segnaliamo un metodo per poter acquistare una gift card Amazon (o di tanti altri siti) risparmiando il 20%, fino anche a 50 euro.

Come fare? Molto semplice:

  1. Se non l’avete già fatto, registratevi gratuitamente a Satispay (con il codice FEDERICOTRAVA avrete 5€ in omaggio e Satispay “donerà” 10€ a noi)
  2. Andate sul sito giftiamo.com e registratevi (potete fare tutto anche da cellulare, con la loro app)
  3. Inserite la gift card che preferite e selezionate l’importo desiderato, quindi mettete nel carrello
  4. Inserite il codice DOITSMART (tutto maiuscolo), e pagate con Satispay: avrete il 20% di sconto (10% per il codice + 10% per il pagamento con Satispay)

Fine: nel giro di un paio d’ore vi verrà recapitato via mail il codice della gift card. Personalmente ho comprato una gift card da 250 euro per Amazon che ho pagato solamente 200 euro, davvero un affarone.

Frequenti 404 sulle puntate: un post-mortem

“Finalmente” ho l’occasione di scrivere anch’io un post-mortem, quei post che le grandi aziende della tecnologia scrivono per spiegare i motivi di qualche problema che ha causato disagi agli utenti. Gli esempi sono molti.

Premessa: da molti mesi a questa parte EasyPodcast si appoggia a due server: il principale, che esegue il CMS, ospita i file mp3 per il download e mille altre cose, e un secondario che è semplicemente un mirror dei file mp3, per aumentare la banda disponibile e distribuire il carico.

I sintomi

Dal giorno del lancio del nuovo CMS si sono verificati diversi errori 404 durante il download delle puntate dal server secondario. La cosa strana è che questi errori avvenivano sempre tra un’ora con minuto multiplo di 5 e il successivo minuto. Ad esempio dalle 9:35 alle 9:36, dalle 20:10 alle 20:11, ecc. Nei restanti minuti, nessun problema.

Cosa è successo

In occasione del passaggio al nuovo CMS, abbiamo cambiato il server principale, passando da un VPS presso OVH a un server dedicato presso Online.net. Il vecchio server era configurato per sincronizzare (tramite rsync) la cartella contenente gli mp3 sul server secondario ogni 5 minuti, mentre il nuovo è stato configurato per fare tale sincronizzazione ogni minuto. Questo è dovuto al fatto che il metodo di caricamento precedente delle puntate era basato su Dropbox (in esecuzione sul server) e incron (una sorta di Hazel per Linux), che appena riceveva un file da noi lo metteva nella cartella corretta e lo copiava sul server secondario, quindi non era necessario essere molto aggressivi con la sincronizzazione “di sicurezza” con rsync. Viceversa, con il nuovo CMS l’upload avviene direttamente tramite il CMS, che però non prevede la copia su server secondari: di quello si occupa rsync, da cui la necessità di eseguirlo molto più frequentemente.

OVH, alla scadenza del server (che non ho esplicitamente cancellato, per lasciarmi il massimo tempo possibile in caso dovessi recuperare qualche file che avessi dimenticato), non l’ha spento e cancellato: ha semplicemente bloccato le connessioni in ingresso, ma non quelle in uscita: il risultato è stato che il server si connetteva regolarmente al secondario per copiare i file, e grazie all’opzione --delete che avevo abilitato andava a cancellare i file mancanti su di lui ma presenti sul secondario, tra cui chiaramente le nuove puntate, che non sono mai arrivate sul vecchio server.

Quindi, ciclicamente ogni 5 minuti:

  1. Minuto 0: il server nuovo sincronizzava i file in un attimo: nulla da caricare. Un attimo dopo arrivava il vecchio server che cancellava i nuovi file.
  2. Minuto 1: il server nuovo sincronizzava i file cancellati dal vecchio il minuto precedente.
  3. Minuto 2: il server nuovo sincronizzava i file in un attimo: nulla da caricare.
  4. Minuto 3: il server nuovo sincronizzava i file in un attimo: nulla da caricare.
  5. Minuto 4: il server nuovo sincronizzava i file in un attimo: nulla da caricare.

Le cause

Riassumendo le cause del problema sono state tre:
1. Ho dimenticato in esecuzione rsync ogni 5 minuti sul server vecchio.
2. OVH non ha spento/cancellato il vecchio server, l’ha solo reso inaccessibile dall’esterno.
3. Ho dimenticato di rimuovere la chiave SSH del vecchio server dal server secondario, consentendo quindi a rsync di connettersi e di cancellare i file.

Soluzione

  1. Ho rimosso la chiave del vecchio server da quelle autorizzate sul secondario.
  2. Ho contattato OVH e li ho informati del problema.

Ho anche fatto una ulteriore verifica su entrambi i server, per assicurarmi che non ci fossero altre chiavi SSH dimenticate/inutili.

Il nuovo sito di EasyPodcast

La storia

Come avrete notato, qualche giorno fa il sito di EasyPodcast ha cambiato radicalmente aspetto, per la prima volta dalla sua nascita nel 2012.

Il nuovo sitio di EasyPodcast

La grande novità è che non si tratta di un semplice nuovo tema di WordPress, la soluzione che abbiamo usato fin da quel freddo pomeriggio di dicembre, ma di un sistema completamente personalizzato e sviluppato da me, Luca.

Perché questa scelta? Perché, detto francamente, l’insieme di accrocchi che avevamo accumulato negli anni per gestire tutte le funzioni di cui abbiamo bisogno era diventato ingestibile, incoerente e fragile. Se poi consideriamo che il plugin di WordPress che abbiamo sempre usato per la gestione dei podcast, PodPress, non è più mantenuto da tempo (anni?), e ora non è nemmeno più disponilbile, eravamo veramente a rischio di trovarci a piedi nol momento meno opportuno.

Giusto per rendere l’idea, soluzioni più o meno fragili mettevano insieme:

  • Il sito
  • L’upload dei file mp3 dei diversi show
  • La pubblicazione delle puntate
  • Una cache statica dei feed RSS, per non appesantire il server (e che però non dovevano rimanere “indietro”)
  • Le dirette
  • L’invio delle notifiche push
  • Lo showbot
  • L’interazione con la nostra app

Così, nel corso di praticamente due anni, composti di qualche settimana di attività fervente alternata a lunghi periodi di calma piatta, è nato PodCMS, così ho chiamato lo strumentino che ho realizzato. La cosa che lo rende più utile per me e per gli altri host che si occupano di pubblicare le puntate è l’integrazione totale di tutte queste parti.

Un esempio? Immaginate che EasyApple trasmetta una puntata in diretta, e che qualche ascolatore abbia suggerito un titolo veramente simpatico tramite lo showbot (da web, oppure dall’app). Nel momento in cui mi appresto a pubblicare la puntata, nella sezione di pubblicazione del pannello di amministrazione posso vedere con un clic i titoli suggeriti, e con un altro impostarlo come titolo. Qualcuno ha suggerito un link? Un clic ed è nelle note della puntata. Poiché avevamo avuto un ospite, posso digitare le sue iniziali ed associarlo alla puntata, in modo che sia visibile nella sua pagina che è stato ospite questa settimana. Alla pubblicazione della puntata, partirà in automatico un tweet che segnala la cosa, con tanto di menzione di ospiti e conduttori.

Le funzioni esaltanti di PodCMS

Dimenticavo: avete mai provato a guardare i tag del file mp3 di una nostra puntata? Sono sempre completi di titolo, copertina, show e conduttori. Finora mi sono affidato ad uno script in Python oppure ad una app per Mac che ho realizzato tempo addietro per provvedere all’inserimento semiautomatico di questi dati, ma rimaneva comunque una soluzione subottimale. Soprattutto se non si usa un Mac (@il_lazza, sto guardando te). Ora, nulla di tutto ciò: andando a pubblicare la puntata si può caricare un file mp3 “qualsiasi”, e sarà PodCMS a provvedere all’inserimento di tag e copertine.

Ma al di là di tutto questo, per voi cosa cambia? Sicuramente avrete un sito più veloce, più chiaro e più ricco di informazioni. C’è la possibilità di cercare le puntate (funzionalità che verrà migliorata prossimamente) e finalmente il sito è responsivo (ci sono ancora alcuni bug e parecchio margine di miglioramento, ma è decisamente meglio della totale non-responsività precedente).

Nerd zone

Dato che so già che qualcuno sarà curioso di sapere cosa sta dietro a tutto, faccio un breve riassunto.

Al momento l’infrastruttura di EasyPodcast è composta da due server: un dedicato che ospita il sito, i download e tutti gli orpelli, e un VPS che ospita solamente i download, per aumentare la banda complessiva (circa 2 gigabit/s totali) e velocizzare i download. Entrambi, nel momento in cui scrivo, girano su Ubuntu 16.04.1 LTS.

Il server web utilizzato è nginx, che è semplicemente fantastico: molto parco di risorse ed estremamente performante. Tutte le comunicazioni sono cifrate tramite TLS (HTTPS per gli amici), download compresi. Ogni richiesta HTTP viene reindirizzata su HTTPS, non è possibile ottenere niente con una connessione in chiaro.

Il database utilizzato è MariaDB, un fork di MySQL. Perché? Perché ho sempre usato quello, e di database capisco poco o niente.

Il server per lo streaming è Icecast, che si è sempre comportato alla grande. Ezstream si occupa di “trasmettere” le repiche delle puntate su EasyRadio quando non siamo in diretta, mentre streamTranscoder genera la versione a bassa qualità (32 kbps) che è accessibile dall’app.

Lo showbot, di cui avevo già parlato in passato, è scritto in nodeJS e usa i websocket per mostrare l’interfaccia per votare i titoli ed è “tenuto in vita” da forever.

Il collante che tiene insieme tutto, però, è PodCMS, scritto in PHP. “Perché PHP?!?1”, “Schifo!”, “Orrore!”, sicuramente molti staranno pensando questo. Il motivo è che è un linguaggio con cui ho una certa dimestichezza, e imparare qualcos’altro per questo progetto sarebbe stato molto impegnativo e avrebbe comportato tempi di sviluppo ancora più lunghi. Avevo inizialmente valutato di usare Ruby On Rails, ma prendere familiarità con un nuovo linguaggio partendo con un progetto così ambizioso mi sembrava decisamente eccessivo.

Questo è tutto quello che “vedete” voi, in più ci sono altri scriptini assortiti che si occupano dei backup, della gestione dei certificati per HTTPS, e di tenere tutto in perfetta efficienza. In chiusura Monit, che monitora la salute del server “dall’interno” e Pingdom che lo fa dall’esterno.

Spero di essere stato sufficientemente esaustivo, ma se avete ulteriori domande, non esitate a contattarmi su Twitter.