Normalmente utilizzo Debian stable e Apache su tutte le mie VM. In questi giorni sto facendo qualche prova in locale con Ubuntu Server LTS (14.04) e NGINX, giusto per capire come funzionano le cose.

La prova è semplice: prendi una VM con risorse limitate (1 core, 2GB di RAM), installaci sopra WordPress (per la precisione un backup di questo blog), e prova a vedere come gira.

$ siege -c 100 -r 10 -b http://localvm/blog

Transactions:               2000 hits
Availability:             100.00 %
Elapsed time:               3.24 secs
Data transferred:          14.23 MB
Response time:              0.16 secs
Transaction rate:         617.28 trans/sec
Throughput:             4.39 MB/sec
Concurrency:               96.03
Successful transactions:        2000
Failed transactions:               0
Longest transaction:            0.69
Shortest transaction:           0.00

Poi mi è venuto in mente di provare a disattivare WP Super Cache.

$ siege -c 100 -r 10 -b http://localvm/blog

Transactions:               2000 hits
Availability:             100.00 %
Elapsed time:             138.59 secs
Data transferred:          14.15 MB
Response time:              6.61 secs
Transaction rate:          14.43 trans/sec
Throughput:             0.10 MB/sec
Concurrency:               95.39
Successful transactions:        2000
Failed transactions:               0
Longest transaction:           14.90
Shortest transaction:           0.00

Mentre nel primo caso il load era intorno a 0.2, nel secondo ha raggiunto piuttosto rapidamente 5. Morale della favola: utilizzate un plugin per la cache, c’è l’imbarazzo della scelta.


Sono da sempre un fan dei GPS+cardio Garmin: da anni possiedo un Edge 500 per la mountain bike e un Forerunner 210w per corsa ed escursioni. Quando in primavera ho visto l’annuncio del Forerunner 225, ho capito che era arrivata l’ora di un upgrade: finalmente niente più fascia per il cardiofrequenzimetro!

Garmin Family

Da quando ho iniziato a correre la fascia è sempre stata un punto dolente, specialmente durante i mesi estivi: durante l’inverno l’intimo funzionale contribuisce a tenerla ferma, in estate “saltella” insieme a te. Il risultato sono dolorose abrasioni sul torace, specialmente nella zona centrale in cui si concentra il peso del sensore. In parte avevo risolto il problema passando dalla fascia originale Garmin Premium a una della Polar (il collegamento del sensore è uguale, per cui è sufficiente trasferire il sensore), ma il fastidio rimaneva. Anche quando viaggi è sempre un oggetto in più da portarsi appresso, a meno di rinunciare ai dati del cardio.

Tornando al Forerunner 225: ormai lo sto utilizzando da quattro mesi e ne sono veramente soddisfatto. La velocità con cui allinea i satelliti è favolosa rispetto al precedente, niente più “pinza” per scaricare i dati o caricarlo (credo sia l’interfaccia più assurda mai creata), contapassi incluso. Ottenere buoni risultati dal sensore ottico è stato un po’ più complicato, per cui ecco qualche suggerimento banale ma pratico se riscontri letture ballerine:

  • Stringi il cinturino. Si tratta di un sensore ottico: se passa luce tra la guarnizione alla base e il tuo polso la lettura sarà meno affidabile.
  • Se il tuo braccio sembra la zampa dell’orso Yoghi, oppure hai il polso pesantemente tatuato, potresti riscontrare qualche problema di lettura.
  • Non allacciarlo esattamente al polso, posizionalo leggermente più in alto dove l’osso non intralcia.
  • Se continui ad avere letture strane, prova a indossarlo al contrario (sul lato interno del polso).

Nel mio caso ho optato per tenerlo interno sul braccio destro: i pulsanti sono orientati verso il gomito, meno rischi di premerli muovendo la mano, e lo sento meno strano rispetto al braccio sinistro.

Ecco un esempio di scarsa e buona lettura (in blu il passo, in rosso la frequenza cardiaca).

Lettura cardio

P.S. Nel caso abbiate qualche dubbio, non è un post sponsorizzato. Non solo il dispositivo è stato pagato, ma è stato acquistato a prezzo pieno visto che non volevo aspettare i primi sconti.


Oggi un’installazione di WordPress ospitata su Aruba ha iniziato a dare errori in area di amministrazione: impossibile accedere alla pagina degli aggiornamenti e alla gestione dei plugin, errori salvando nuove bozze.

Provato nell’ordine a:

  • Rinominare la cartella wp-content/plugins, nel dubbio disattivati anche i plugin via database.
  • Ripristinare i permessi in Aruba da Pannello di controllo hosting Linux → Strumenti e impostazioni → Riparazione Permissions [sigh].
  • Sostituire tutti i file del core di WordPress con quelli di un pacchetto pulito.

Il log di errori, accessibile via Pannello di controllo hosting Linux → Strumenti e impostazioni → Mostra log degli errori, riporta “End of script output before headers” per ogni pagina di errore visualizzata.

A questo punto ho aperto un ticket di assistenza con scarse speranze di soluzione.

Nel frattempo l’illuminazione è arrivata via Twitter da San Beggi: controlla la versione di PHP.

L’ho trovata impostata a 5.2.x, e visto che il tutto ha sempre funzionato dubito sia mai stata impostata a quel valore, considerato anche questo post di “solo” 4 anni fa.

Morale della favola: controllate la versione di PHP, anche a prescindere da eventuali errori.


È arrivato il tempo di cambiare uno dei notebook di casa, ormai lento oltre ogni limite di umana sopportazione (ha ancora Windows Vista). Girando un po’ in rete ho trovato un HP abbastanza interessante: HP 250 G3, monitor 15.6″, Intel Core i5-4210U, 4 GB di RAM, hard-disk 500 GB, DVD±RW, 1xUSB 3.0, Free DOS. Insieme al notebook ho ordinato un SSD da 240 GB, visto che è il componente che influisce maggiormente sulla velocità finale.

Il computer è “onesto”, l’area della tastiera sembra un po’ troppo flessibile ma in generale ha un buon rapporto qualità/prezzo. Tutto bene, finché non scopri cosa tocca fare per sostituire l’hard-disk (non esiste un cassetto estraibile con l’hard-disk o uno scomparto per la RAM):

  • Togliere tutte le viti del fondo. Tocca anche scollare i due piedini posteriori, visto che due viti sono nascoste lì sotto.
  • Sfilare il masterizzatore DVD.
  • Sganciare la tastiera e scollegarla. Non lo si capisce bene da alcuni video, ma la piattina non è “incastrata” nel connettore (non bisogna tirarla), bisogna ruotare di 90° il connettore grigio verso l’alto sbloccando la piattina.
  • Sganciare i connettori (piattine) di touchpad e pulsante di alimentazione.
  • Togliere altre 4 viti e sganciare il coperchio superiore.

HP 250 G3

Personalmente credo di non aver mai visto un notebook progettato in modo più assurdo. Come detto il computer è onesto per il prezzo, ma decisamente sconsigliato se vi spaventate di fronte a questo tipo di operazione, soprattutto su una macchina nuova.


Questa mattina ho scoperto che il codice utilizzato da anni per visualizzare in WordPress i video recuperati da un feed RSS di YouTube ha smesso di funzionare. Invece di visualizzare il video corretto, ci si trova davanti a questo avviso.

Ecco il codice aggiornato e ripulito. Il videoId è disponibile direttamente nell’XML del feed.

<?php
include_once(ABSPATH . WPINC . '/feed.php');

$get_videos = function ($feed_data) {
    $output = "<ul>\n";
    if (! $feed_data) {
        $output .= "<li>Nessun video disponibile</li>\n";
    } else {
        foreach ($feed_data as $item) {
            $youtubetitle = $item->get_title();
            $video_id = $item->get_item_tags(
                'http://www.youtube.com/xml/schemas/2015',
                'videoId'
            );
            $youtubeid = $video_id[0]['data'];

            $output .= "<li>\n";
            $output .= '<iframe width="240" height="176" src="https://www.youtube.com/embed/' .
                       $youtubeid . '?controls=0&amp;showinfo=0" frameborder="0"></iframe>';
            $output .= "<span>{$youtubetitle}</span>\n";
            $output .= "</li>\n";
        }
    }
    $output .= "</ul>\n";

    return $output;
};

?>

<h3>Video</h3>
<?php
    $url = **** URL del feed RSS****;
    $rss = fetch_feed($url);
    if (! is_wp_error($rss)) {
        // Verifica se l'oggetto è stato creato correttamente
        // Individua il numero di video presenti, al massimo leggine 3.
        $maxitems = $rss->get_item_quantity(3);
        // Crea un array di tutti gli elementi (il primo elemento ha indice 0).
        $rss_items = $rss->get_items(0, $maxitems);
    }
    echo $get_videos($rss_items)
?>

Pedala che ti passa

19 aprile 2015

Tra i propositi per il 2015 c’era quello di correre almeno 100 km al mese. Sarà dura, visto che mi è ufficialmente tornata la scimmia per la MTB, e mi sono finalmente deciso a cambiare la vecchia (12 anni) con una 29″.

New MTB

Per il momento il 2015 segna 326 km di corsa, 618 km in mtb. Per quest’ultimo dato la differenza sostanziale è il dislivello totale: 10.127 m (fatti in buona parte su sterrato), contro i 13.401 m (per 1.121 km) del 2014.