7 giochi da tavolo da mettere in valigia

In questo spazio non si scrive solo WordPress. Questa volta voglio infatti partecipare al meme di Bernapapà che aveva lanciato dalle pagine di Giochi sul nostro tavolo

Questi sono i 7 Board Game che mi porterei dietro dovessi andare a vivere in un luogo isolato.

season
Nome: Season
Data di pubblicazione:
Autore: Régis Bonnessée

coloni-imperiali
Nome: Imperial Settlers (Coloni Imperiali in edizione italiana)
Data di pubblicazione: 2014
Autore: Ignacy Trzewiczek

terra-mystica
Nome: Terra Mystica
Data di pubblicazione: 2012
Autore: Jens Drögemüller, Helge Ostertag

innovation
Nome: Innovation
Data di pubblicazione: 2010
Autore: Carl Chudyk

sit-gloria-rome
Nome: Glory Rome (Sit Gloria Romae in italiano)
Data di pubblicazione: 2011
Autore: Ed Carter, Carl Chudyk

kingsburg
Nome: Kingsburg
Data di pubblicazione: 2007
Autore: Andrea Chiarvesio, Luca Iennaco

stoneage
Nome: Stone Age
Data di pubblicazione: 2008
Autore: Bernd Brunnhofer

Mi rendo conto che molti di questi sono giochi di carte con un’alta componente strategica e devo confessare che probabilmente il mio passato su MTG abbia lasciato il segno.

Questi i non classificati ma che comunque gioco sempre volentieri: Puerto Rico, Tzolkin e Village

Poi magari un’altra volta vi racconto di quelli che a cui mi piacerebbe giocare ma di cui non ne ho ancora avuto occasione

 

Le performance di WordPress con PHP7

Lo scorso weekend ero a Verona per il PHPDay che come ogni anno si dimostra un evento di grandissimo interesse e con un’impeccabile organizzazione.

In uno dei primo talk Davey Shafik ha presentato le novità di PHP7 con “What to Expect When You’re Expecting: PHP 7” e tra le cose più importanti sì è perlato di performance.

“Performance, Performance, Performance” deve essere stato il mantra durante tutto il ciclo si sviluppo e dai benchmark sembra che i risultati siano notevoli.

performance-php7

Passiamo adesso al nostro caro WordPress:

wordpress-php7

Possiamo vedere chiaramente che dai questi test l’impatto prestazionale sia veramente incredibile. Stiamo parlando di un miglioramento con un fattore 2.4x che in percentuale diventa 59% (cinquantanovepercento).

Dopo aver visto questa slide io rimango folgorato quasi come S. Paolo sulla via di Damasco e continuo ad interrogarmi su quali siano gli elementi responsabili di questo grandissimo miglioramento.

La risposta arriva qualche talk dopo da Patric Allaert che con il suo “PHP Datastructures and the impact of PHP 7 on them” toglie i miei dubbi.

php7-perfomace-array

Facendo WordPress un grandissimo uso di array ecco che avendone ottimizzato la gestione sia nella creazione che nella lettura ne abbiamo un beneficio enorme.

Teoricamente il rilascio è previsto per Ottobre 2015 e quindi entro la fine di questo anno potremmo valutare un upgrade dei nostri server e/o chiedere ai nostri provider come poter beneficiare di questa nuova versione.

Per chi non l’avesse ancora vista qui l’infografica preparata da Zend: https://pages.zend.com/ty-infographic.html

WordPress: Visualizzare solo i “contenuti” di cui si è autore

Nelle situazioni in cui più persone partecipano alla preparazione degli articoli sullo stesso sito a volte ci si trova davanti ad una grande quantita di contenuti in cui si fatica a filtrare le proprie bozze.

Quando necessario, per semplificare le cose, aggiungo questa piccola funzione che filtra post, pagine e Custom Post Type sulla base dell’utente loggato verificando 3 cose:

  1. se non faccio parte del gruppo “administrator” (gli admin continueranno e vedere tutti i contenuti)
  2. se sono in area di amministrazione
  3. se non sono nella pagina dei media (in modo che possa vedere tutte le foto caricate)

L’hook usato è il “pre_get_posts” che ci permette di aggiungere una condizione prima di effettuare la query rendendo il tutto molto più performante.

Queste poche righe vanno aggiunte nel file function.php oppure linkate tramite un include o require.

WordPress: preparare trappole per i furbetti

Se dopo esserti protetto dai tanti attacchi bruteforce continui a vedere nei log errori 404 a percorsi non convenzionali (es. phpmyadmin, phpinfo, test, cgi, register, admin, system, ecc…) è possibile che qualche BOT automatico stia facendo una scansione cercando potenziali falle.

Una delle possibili soluzioni è l’implementazione di una semplice blackhole in php. In pratica si tratta di una trappola che scatta ogni volta che si tenta di visitare alcune url.

Via .htaccess si effettua il redirect verso un specifico file php che si occupa tracciare l’ip e quante più informazioni possibili presentando poi una pagina in cui lo si informa che la cosa non ci è piaciuta.

Per chiudere il giro, ad ogni acesso controlleremo che l’IP non sia uno dei quelli precedentemente tracciatati e nel caso gli diremo che il suo IP è stato bloccato:

“You have been banned from this domain”

 

Per completezza devo dire che questa tecnica presenta dei problemi di perfomace nel caso, con il tempo, il numero di IP da controllare dovesse diventare molto grosso in quanto richiedere la lettura di una file ed il confronto di una stringa per ogni pageview.

Al momento l’unica alternativa che conosco è fail2ban ma non sempre è possibile chiedere al proprio servizio di hosting la sua implementazione.

Ecco come procedere:

  1. Scarichiamo dal sito di Perishable Press il file Blackhole.zip e scompattiamo in una directory nella root del nostro sito e modifichiamo le variabili che troviamo dentro index.php (mittente, destinatario,soggetto)
  2. Aggiungiamo le regole al nostro .htaccess per intercettare le url “maliziose”
  3. Facciamo in modo di caricare il file blackhole.php dentro il nostro fuctions.php

Se abbiamo fatto tutto bene, tentando di accedere ad una di quelle URL, dovremmo trovarci davanti a quella bella pagina rossa che vedete qui in alto e il nostro IP dovrebbe essere stato aggiunto al file blackhole.dat. (ricordatevi che poi è da togliere)

Qui sotto due piccoli snippets che spero possano esservi d’aiuto:

Nota: io aggiungo al soggetto della mail che ricevo anche il SERVER_NAME in modo che sappia su che sito è stato tentato l’accesso: $_SERVER['SERVER_NAME']