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

 

WordPress dal 2003 ad oggi

Bluehost ha pubblicato una bella infografica sull’evoluzione di WordPress dall’anno delle sua prima release pubblica. Il lontano 2003.

A rileggere le features introdotte da versione a versione sembra passato davvero tantissimo tempo e la cosa sorprendente è che il livello di retrocompatibilità è altissimo anche con template vecchi di oltre 7 anni che continuano a girare senza problemi.

Il mio primo post è di quasi 10 anni fa, datato 26 maggio 2005, e ricordo ancora la vecchia procedura di installazione della versione 1.5.1.

Copiando in parte dalla infografica ho fatto un elenco (molto parziale) delle principali funzionalità introdotte di volta in volta.

  • Versione 1.2
    • RSS import
    • Thumbnail creation
    • Plugin support
    • Custom Fields
  • Versione 1.5
    • theme system
    • static page advancements
  • Versione 2.0
    • Persistent cache
    • New usuer rol system
    • New administration interface
  • Versione 2.1
    • Autosave
  • Versione 2.3
    • New Tax system
    • Speed optimization
  • Versione 2.5
    • Shortcode API
  • Versione 2.6
    • Gallery sorting capabilities
    • Press This bookmarklet
  • Versione 2.8
    • Build-in theme installar
    • Improved UI
    • Improved API
  • Versione 2.9
    • Image editing
    • Bulk plugin features
    • Trash/Undo features
    • Oembed visual support
    • Custom Post Type Support
  • Versione 3.0
    • Custom headers and backgound
    • Custom Menu
    • Simplified Taxonomy
  • Versione 3.1
    • Post Format
    • Admin Bar
  • Versione 3.4
    • Theme Customizer
  • Versione 3.5
    • New Media Manager
    • Build-in audio/video support
    • Enganced autosave
  • Versione 3.7
    • Automatic manteinance protocol
    • Enhanced password protocol
    • Improved search
  • Versione 3.8
    • Sidebar Widgets
  • Versione 3.9
    • Live widgets
    • Headers preview
  • Versione 4.0
    • Language select during Install
    • Media Embeds
  • Version 4.1
    • Drag and drop themes
  • Versione 4.2
    • Press This revamped
    • Customizer theme installer

Riferimenti: https://www.bluehost.com/

WordPress: cambiare il permalink della ricerca

Questo è un’altro degli snippets che uso normalmente sui template WordPress che mi chiedono di sviluppare.
Il primo pezzo (template_redirect) si occupa semplicemente di modificare il permalink base delle ricerca da “http://www.nomesito.com/?s=query” a “http://www.nomesito.com/search/query/“.

Con il secondo gestisco il caso in cui NON voglio che la keyword usata per la ricerca sia “search“.
Vado quidi a modificare la “search_base” ed a creare la regola di rewrite.
Ovviamente è necessario rigenerare i permalink in modo che la regola venga gestita correttamente.

Mark Jaquith aveva scritto anche un plugin ma oltre al fatto che non gestiva la modifica della “search_base” preferisco gestirlo via codice includendolo dimanicamente dentro functions.php

Awesome WordPress Toolbox

Anche se in rete esistono già molte raccolte di link legate a WordPress voglio provare a raccogliere le risorse che ho accumulato in un repo che avevo aperto parecchio tempo fa.

Questo il link: Awesome WordPress

Il taglio che mi piacerebbe dare, che in qualche modo potrebbe differenziarsi dalle altre, è relativo al tipo di risorse elencate che vogliono essere di supporto a chi sviluppa cercando di seguire quelle che sono le best practices.
Non ho l’obiettivo di creare una raccolta completa ma un’elenco di risorse capace di aiutare e velocizzare il lavoro di tutti i giorni.

Al momento ci sono circa una trentina di link che con il tempo spero di far crescere cercando di evitare link a risorse premium.

Ringrazio in anticioo tutto quelli che avranno voglio di contribuire facendo delle commit o condividendolo sui diversi social

WordPress: Area riservata

In molti casi è necessario riservare l’accesso ad alcuni contenuti solo agli utenti loggati e senza ricorre ad ulteriori plugin io solitamente implemento un template di pagina che verifica che l’utente corrente sia correttamente loggato.

Questo un veloce esempio:

I più attenti potrebbero dirmi che per una cosa del genere basterebbe impostare la visibilità della pagina come “privata” ma in questo modo abbiamo il vantaggio di poter personalizzare anche l’aspetto della pagina usando un menu ed una sidebar su misura per miglioare l’esperienza utente.

Lo stessa tecnica si può applicare anche ad interi CPT semplicemente eliminado la riga relativa al nome del template e modificando il nome del file in questo modo:

single-{nome_post_type}.php

Ricordatevi però che in questo modo i contenuti continueranno ad essere elencati sia negli archivi che nella ricerca di default di WordPress, sarebbe quindi oppurtuno preparare un contenuto di default anche per il campo riassunto (excerpt) e gestire i listing in modo opportuno.

Avvistamento Mecha su Torino

Avevo visto alcune foto delle sue opere su Facebook, poi quest’anno a Torino Comics ho avuto modo di ammirarle in tutta la loro imponenza. Sono bellissime.

Sto parlando di Andrea Gatti, un disegnatore di torino che sta portando avanti un progetto personale in cui i protagosti sono i Robottoni degli anni 80 ambientati in un alcune città italiane contemporanee. (tra cui anche Torino)

Nella pagina di progetto “Mecha” troviamo scritto:

Immagini di più recente produzione in cui gli eroi robot di tanti anime giapponesi visti nell’infanzia, tornano in azione. Questo stile, molto pittorico, a tratti quasi approssimativo, è stato scelto per il piacere concesso da un tratto più libero per meglio coniugare i robot giganti in un contesto urbano e riconoscibile. Il riscontro dei molti appassionati del genere, ma non solo, è stato immediato.

Questa alcune anteprime dei suoi lavori:

Link bonus:
Non vi piacciano i Mecha e preferite le principesse?
Andate sul sito di Jirka Vinse Jonatan Väätäinen e date un’occhiata al suo progetto “Real Life Disney”

 

WordPress: Organizzare la Media Library

Più di un cliente mi ha chiesto un sistema per organizzare meglio la “media library” in modo da rendere più facile e veloce la ricerca delle immagini già inserite.

In alcuni casi sono andato a creare a mano una tassonomia da agganciare direttamente agli attachment ma per valorizzarla era poi necessario andare nella pagina di dettaglio della singola immagine.

Con Enhanced Media Library possiamo risolvere il problema creando una categorizzazione deli diversi contenuti oppure una suddivisione per tipo (mime-type).

wordpress-enhanced-media-library-filter

Anche se questo plugin non dovrebbe impattare con le perfomance sul frontend ne consiglio l’uso solo a chi gestisce una libreria molto grossa e deve riutilizzare immagini già caricate in passato.

WordPress: Aggiungere campi per profilo facebook e twitter agli utenti

In molti siti, al fondo degli articoli, quando il template lo supporta è presente un box con i dati dell’autore che lo ha scritto.

Queste informazioni vengono prese dalla pagina di pagina di profilo utente che di default prevede nome, mail, sitoweb e descrizione, per l’avatar in genere viene usato il servizio offerto da Gravatar (che è un’altro dei tanti servizi Automattic) ma per la gestione dei link ai profili social dobbiamo fare un po’ di lavoro.

Questa la mia soluzione:

add_filter('user_contactmethods', function ($profile_fields) {
// Nuovi campi
$profile_fields['twitter'] = 'Twitter ';
$profile_fields['facebook'] = 'Facebook ';
$profile_fields['gplus'] = 'Google Plus';
// Remove old fields
unset($profile_fields['aim']);
return $profile_fields;
});

Per leggerle è semplicissimo:

get_the_author_meta('twitter')

Questo il risultato su uno dei miei ultimi lavori:
user-bio

Rispetto all’utilizzo di un plugin rimane ovviamente molto più leggero e ci permette di integrare il tutto all’interno del nostro template.