Attivare l’interfaccia classica di Firebug in Firefox

Gli aggiornamenti software sono sempre fondamentali, anche se qualche volta ci sono alcune interruzioni drastiche come quando l’interfaccia classica di Firebug in Firefox è stata incorporata per via di una maggiore integrazione degli strumenti all’interno del programma principale.

Inoltre, alcuni moduli aggiuntivi di Firebug se utili nel quotidiano, non sono più disponibili e di conseguenza utilizzabili: lasciamo da parte i capricci (da come si può vedere dai commenti negativi sulla sezione componenti aggiuntivi di Firefox al limite della frustrazione ci sono grandi talenti in arte drammatica tra gli utenti di Firebug) e ripristiniamo la situazione con dei consigli pratici applicabili facilmente.

L'interfaccia classica di Firebug in Firefox si recupera modificando about:config

Recuperare l’interfaccia classica di Firebug in Firefox modificando la configurazione

Evitate di effettuare tentativi di rimozione e di reinstallazione di Firebuo o peggio di Firefox.

La strada percorribile per ottenere il ripristino dell’interfaccia classica di Firebug in Firefox è la modifica della configurazione attraverso l’accesso ad about:config.

Le chiavi da individuare sono le seguenti

browser.tabs.remote.autostart
browser.tabs.remote.autostart.1
browser.tabs.remote.autostart.2

e vanno reimpostate a false per tornare ad utilizzare Firebug come prima.

Conviene continuare ad utilizzare Firebug?

Risposta breve: no.

Lo sviluppo del progetto Firebug è arrestato, e la versione attuale non supporta i processi multipli, pertanto l’utilizzo è fortemente scoraggiato e Mozilla promuove l’utilizzo dei DevTools in sostituzione (anche se non si ottengono proprio le funzionalità identiche di Firebug).

La previsione è quella di far convergere l’utenza verso l’adozione degli strumenti integrati, visto anche i numerosi sforzi di porting anche dei moduli aggiuntivi che hanno contribuito al successo di Firebug.

Questo stato di grazia arriverà comunque ad una fine, fino a che la modalità di multi processo potrà forzatamente essere disattivata.

Versioni multiple di Node.js: installazione e gestione

Per postazioni dedicate allo sviluppo od ambienti di staging, o più semplicemente riuscire ad utilizzare versioni multiple di Node.js su una macchina o si crea una soluzione personale oppure si adotta un approccio condiviso dalla comunità. Essendo l’argomento di esigenza diffusa, sono già presenti delle proposte che possiamo utilizzare per le nostre esigenze, potendo ulteriormente dare un contributo comunicando la nostra esperienza e pubblicare le nostre migliorie se riusciamo ad ottimizzare il software che abbiamo adottato.

Gestire versioni multiple di Node.js con nvm

Node Version Manager è un software scritto in Bash che semplifica la gestione di versioni multiple di Node.js in modo minimale su Linux ed OSX. L’installazione e l’aggiornamento possono essere lanciati con

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

verificando l’esito in una nuova sessione, che renderà disponibile nvm come funzione di shell (ed in background recupererà i file dal repository di origine per utilizzarli in ~/.nvm).

Per conoscere l’elenco delle versioni installabili, si può lanciare la sintassi

nvm ls-remote

e vedere la vasità delle diverse versioni disponibili.

versioni multiple di node.js disponibili in remoto

Ad esempio, se sulla macchina voglia installare la versione LTS più recente (al momento della prima stesura dell’articolo v4.6.0) è possibile lanciare il comando

nvm install 4.6.0

che si preoccuperà di recuperare la versione richiesta, ed in caso di prima installazione, di creare anche l’alias predefinito. Quindi lanciando node -v sarà tornata il codice di versione appena installata; con nvm ls saranno tornate le versioni e gli alias disponibili globalmente e gestibili attraverso nvm.

Per attivare versioni differenti, l’opzione da usare è use: se quindi nel frattempo abbiamo installato la versione v6.7.0 contenente delle funzionalità più recenti rispetto alla precedente, in comando da utilizzare è

nvm use 6.7.0

dato che il supporto è anche valido per alias e visto che per questo scenario la versione v4.6.0 è l’ultima stabile, si può tornare alla versione precedente lanciando

nvm use stable

Essendo un prodotto opensource, è possibile contribuire al miglioramento di nvm attraverso GitHub.

Aggiornamento di UCM6102 Grandstream IPPBX

La procedura di aggiornamento di UCM6102 (un IPPBX prodotto da Grandstream idoneo per la fascia aziendale medio-piccola) è come ogni operazione di aggiornamento di sistemi, consigliata da eseguire per motivi di sicurezza ed utile in quanto aggiunge nuove funzioni rispetto alla versione di base soprattutto per sistemi entrati in funzione da diversi mesi.

Aggiornamento di UCM6102: preparazione

Preparazione all’aggiornamento di UCM6102

Tra i primi consigli propedeutici all’attività, inserirei la pianificazione per l’esecuzione delle procedure durante orari con la minima attività telefonica (dipendente dalla tipologia di industria di riferimento dell’azienda), disporre di una penna USB per la copia delle configurazioni durante l’aggiornamento di UCM6102 ed il recupero delle immagini firmware dal sito del produttore.
Il sistema utilizzato per la supervisione può indifferentemente essere Linux/OSX/Windows, consiglio tuttavia l’impiego di un portatile ed una connessione via rame allo stesso segmento di rete dell’IPPBX: anche se superfluo scriverlo, non sono previsti riavvii da avviare manualmente durante i passaggi se non quando indicato.

Dal momento che i passaggi sono dipendenti dallo stato attuale, per l’appliance in esame la versione di partenza è la 1.0.6.10: l’informazione è visibile dalla vista di stato generale del sistema, raggiungibile dalla schermata di amministrazione.

L'aggiornamento di UCM6102 dipende dalla versione attuale

Infatti questo UCM6102 andrà aggiornato per versioni rilasciate in successione come pietre miliari; la prima verso la versione 1.0.9.97 (file Release_UCM61xx_1.0.9.97/ucm6100fw.bin).

Poi si passa alla versione 1.0.10.44 con l’uso della chiave USB, divisa tra repository vergine (prima Release_UCM61xx_1.0.10.44/ucm6100dpt.bin) in modalità di ricovero e firmware effettivo (file Release_UCM61xx_1.0.10.44/ucm6100fw.bin). Si noterà infatti nel frattempo la versione di boot incrementata rispetto al firmware.

Il recovery mode durante l'aggiornamento di UCM6102

Per individuare l’indirizzo a cui accedere per l’interfaccia di ricovero, aiutatevi leggendo l’informazione direttamente sul display dell’UCM6102.

Il firmware 1.0.10.44 caricato prima del riavvio

Solamente una volta notificato il caricamento del firmware 1.0.10.44, si può lanciare reboot.

Il passaggio verso 1.0.11.27 è ancora una volta più semplice, quindi si va a caricare il firmware (file Release_UCM61xx_1.0.11.27/ucm6100fw.bin) da Manutenzione > Aggiorna > Aggiornamento locale ed a procedura conclusa il UCM6102 sarà aggiornato all’ultima versione e con nuove funzionalità disponibili per il vostro lavoro e migliorare il servizio per i vostri clienti.

Spostare posta POP3 in IMAP con script Perl

Quando non si può scegliere IMAP per alcuni scenari di migrazione, e l’accesso per spostare posta POP3 è l’unica opzione, le informazioni dell’articolo Migrare posta tra server, via IMAP e POP3 possono essere integrate utilizzando un ulteriore software.

spostare posta pop3 con script perl

Spostare posta POP3 con pop3toimap.pl

Prendiamo in esame il kit fornito da IMAP Tools che consiste di una raccolta di programmi in Perl per la gestione della posta elettronica.

Tra i software messi a disposizione, quello da dover utilizzare è pop3toimap.pl che accetta da linea di comando le opzioni dove specificare direttamente le credenziali della casella POP3 e quelle per l’accesso IMAP:

pop3toimap.pl -p pop.server.com/utente@server.com/passPOP3 -i imap.server.com/utente@server.com/passIMAP

La sintassi alternativa da utilizzare è prevista attraverso il supporto di un file contenenti una coppia o più di credenziali, indicata in righe separate all’interno di un file di testo semplice con una sintassi fissa

popUsername password imapUsername password

che ovviamente è utile in caso di migrazioni multi utenza, con gli stessi server

pop3toimap.pl -p pop.server.com -i imap.server.com -u file_credenziali_utenti

Alcune versioni precedenti possono presentare un errore logico del codice Perl (correggibile mediante un piccolo fix a parte del codice che cicla la lettura delle mailbox), ma potendo contare sulla versione aggiornata del team di sviluppo il problema non si presenta.

Oltre il singolo script, può essere interessante consultare la guida completa all’uso: infatti visto i diversi software disponibili può essere interessante richiedere la suite completa nel caso durante la propria attività quotidiana si possa avere bisogno di soluzioni già messe a disposizione e pronte per l’utilizzo.

Errore 550 di outlook.com: soluzione al problema SC-001

A seguito di monitoraggio proattivo di una infrastruttura dedicata al servizio di posta elettronica, si presentano eventi aggressivi di blocco in invio di messaggi di posta elettronica ed è comune trovarsi di fronte ad un errore 550 di outlook.com che si presenta come un rifiuto a prendere in carico email indirizzate ai clienti Microsoft.

Essendo assolutamente legittimo per l’azienda tutelare l’efficenza della consegna di posta elettronica privilegiando fonti con la migliore reputazione possibile, sembra che in alcune occasioni sia davvero restrittiva. Infatti la tecnologia SmartScreen oltre ad effettuare controlli comuni verso dominio, indirizzo IP, DNS, SPF, DKIM, DMARC, oggetto, contenuto, liste di reputazione condivise, valutazione dei reclami mette in campo altre azioni proprietarie. Sebbene nella sezione di risoluzione dei problemi del sito Postmaster di oulook.com presenti delle opzioni comuni da poter verificare, non aiuta nella soluzione del caso particolare.

errore 550 di outlook.com visibile come estratto ritornato da postfix

Errore 550 di outlook.com del tipo SC-001

Nell’estratto di una email d’esempio, il tentativo di inoltrare ad outlook.com qualsiasi messaggio viene bloccato ed il MAILER DAEMON in questo caso presenziato da un setup Postfix comunica il fallimento. Il dettaglio del codice richiamato riporta:

550 SC-001 Messaggio rifiutato da Outlook.com per conformità ai criteri. I motivi del rifiuto possono essere correlati a contenuti con caratteristiche di posta indesiderata o alla reputazione dell’IP o del dominio. Se non sei l’amministratore della rete o della posta elettronica, contatta il tuo provider di servizi Internet o di posta elettronica per assistenza.

Il prossimo passo è stato quindi della richiesta di un accesso allo strumento Smart Network Data Service che consente praticamente di vedere il punto di vista interno ad outlook.com per specifici domini/IP/utenti che intendono comunicare con la loro rete. Compilando il modulo dentro Request Access si ottiene il privilegio di poter consultare, anche in modalità automatica, i dati in View Data per avere già indicazioni di complaints e catture delle spamtrap.

errore 550 di outlook.com non dipendente da spam trap

Va detto che la procedura è riservata a chi ha in carico una rete di indirizzamento assegnata via RIPE o attraverso LIR e la procedura interrogherà il database per l’indirizzo IP, CIDR o ASN quindi per esempio tra i destinatari possibili si troveranno i contatti di postmaster e di abuse.

Contattare il team Outlook.com Deliverability

Visto che lo scenario specifico per l’errore 550 di outlook.com non è aggredibile con queste informazioni, si passa alla sezione View IP Status che putroppo segnala la rete “Blocked due to user complaints or other evidence of spamming”: visto che il filtro SmartScreen è attivo anche per indirizzi IP che non gestiscono posta, è evidente un’opzione aggressiva che si presume attivato per una rete CIDR che intercetta anche la nostra (e magari le lamentele provengono da indirizzi contigui non a nostro carico).

A questo punto è importante chiedere assistenza al team Outlook.com Deliverability Support fornendo maggiori dettagli possibile sull’attuale situazione presentando la vostra disponibilità alla collaborazione ed i ringraziamenti di rito.

Per l’ultimo evento esaminato, vista la bontà dello stack tecnologico gestito e la mancanza di motivazioni oggettive che giustificasse il filtro, la segnalazione è stata subito gestita da Microsoft che ha pianificato l’inserimento della classe in stato Conditionally mitigated.

Il risultato è stato apprezzabile in 4 ore, dopo le quali gli invii di posta elettronica destinati ai clienti outlook.com sono stati nuovamente gestiti da Microsoft.

Migrare posta tra server, via IMAP e POP3

Considerata la dinamicità con la quale possono essere attivate delle caselle di posta elettronica tra tecnologie differenti ma aderenti agli standard, è possibile dover migrare posta o sincronizzare messaggi e struttura Maildir senza un particolare preavviso anche per poche unità.

migrare posta: imap o pop?

Migrare posta: IMAP o POP3?

La domanda se utilizzare il protocollo IMAP o POP3 per sincronizzazioni e trasferimenti può essere influenzata sia dalla disponibilità esclusiva dell’uno nei confronti dell’altro o fino alla simpatia personale: quando possibile l’indicazione è quella di utilizzare IMAP, in quanto consente la migliore flessibilità di interrogazione e gestione delle utenze di posta.

Sincronizzazione della posta con imapsync

Il software da poter utilizzare per la migrazione IMAP preso in esame è imapsync ed è scritto in Perl; disponibile con port nella maggior parte delle piattaforme, è l’ideale per trasferire e replicare in modo unidirezionale il contenuto di una casella di posta (con l’eventuale eccezione di funzionalità tipo contatti e calendario).

Per l’installazione ad esempio in CentOS, il pacchetto è disponibile all’interno del repository epel, pertanto è possibile installarlo via yum, con la sequenza di comandi

yum install epel-release
yum install imapsync

ovvero per le versioni precedenti di Centos

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6*.rpm
yum install imapsync

Imapsync è anche disponibile come port Darwin ed installabile con una formula Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
brew install imapsync

Il manuale completo è disponibile via man, anche se l’opzione fin da subito più comoda è –dry che nel caso sia indicata rende qualsiasi comportamento come solamente simulato.

L’esempio di migrazione base di una casella con medesimo nome utente con cambio di server e password è il seguente

/usr/bin/imapsync \
 --host1 vecchio.server.com --user1 utente@posta.com --password1 1lMioTe$$or0 \
 --host2 nuovo.server.com --user2 utente@posta.com --password2 c0m3_s3_f0ss3_an7an1

ma le opzioni sono talmente raffinabili che vale davvero la pena consultare la documentazione per trovare quelle più indicate per i propri setup.
Una volta lanciata l’esecuzione, il software ricostruisce nel nuovo server la struttura con i messaggi provenienti dalla sorgente, riportando alla fine il numero dei messaggi trasferiti, saltati, cancellati ed altri indicatori relativi alle attività completate.

imapsync running on macosx

Utilizzare icon font ed i caratteri con simboli vettoriali

L’utilizzo degli icon font nell’ambito dei progetti web consente l’utilizzo di pittogrammi e simbologie facilmente comprensibili per richiamare l’attenzione su una particolare azione o per sintetizzare un concetto in modo essenziale.

Sono possibili diverse varianti di integrazione e differenti famiglie di icone a disposizione già pronte all’utilizzo, ma ovviamente rimane sempre interessante poter utilizzare un proprio set dedicato.

Icon font famiglia Font Awesome

Vantaggi degli icon font

Dal punto di vista di chi cura la parte di sviluppo di un progetto web, le icone hanno sempre portato a sentimenti contrastanti tra soddisfazione per essere riusciti a comunicare in una piccola effige un concetto e la frustrazione a seguito delle critiche su soggetto, dimensione, colore, nitidezza ed altre caratteristiche.

Lo scenario comune può infatti rivelare che se inizialmente dettagli su questi elementi sono considerati secondari, di fatto in corso di esecuzione il tempo dedicato a queste attività si dilata facilmente.

Quindi avere preventivamente un’offerta del materiale a disposizione, le caratteristiche che è possibile rendere variabili e possibilità di semplificare e ridurre i tempi di intervento in caso di ottimizzazione.

Gli icon font rispondono a questo tratto, condividendo tra i punti:

  • incorporazione trasparente anche su progetti già attivi
  • possibilità di cambio delle dimensioni e delle caratteristiche cromatiche attraverso la manipolazione dei fogli di stile
  • sostituzione od integrazione anche tra famiglie diverse
  • fruibilità da dispositivi diversi senza dover aggiungere formati aggiuntivi
  • dimensioni contenute rispetto ad opzioni di icona in formato grafico

Soluzione con Font Awesome

La soluzione con Font Awesome risulta di diretta ed immediata esecuzione, attraverso, l’inclusione di un foglio di stile.

L’integrazione consigliata di basa su un servizio CDN attivabile con una singola riga:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">

È possibile prendere visione dell’intero set più recente delle icone disponibili e le possibilità di esempio di utilizzo pratico dei codici mnemonici come attributi da aggiungere in HTML.

<i class="icona fa fa-check-square" aria-hidden="true"></i> Esempio di icona Font Awesome

Bonus Font Awesome senza HTML

Se l’inclusione di codice HTML per ottenere le icone è da evitare, rimane la possibilità di utilizzare delle istruzioni CSS, in modo equivalente a quello dell’utilizzo di un carattere specifico. In questo caso è da indicare il codice del carattere equivalente a quello ricavabile dalla tabella di riferimento non mnemonica.

.icona:before {
    position: absolute;
    font-family: "FontAwesome"; 
    content: 'f14a';
}

Anche in questo caso rimane possibile aggiungere altre istruzioni CSS come il colore e la dimensione.

 

 

Raggiungibile con tono libero: verifica automatica di un’utenza mobile

Analizzando uno scenario applicativo reale, è possibile incontrare tra le specifiche una esigenza di dover automaticamente telefonare ad un numero ed assicurarsi che risponda con tono libero, in dettaglio riconducibile al seguente estratto:

Dato un numero di utenza telefonica mobile, corrispondente alla SIM utilizzata all’interno di un terminale per telecontrollo, è possibile contattare lo stesso numero con una chiamata voce per verificare la disponibilità della rete mobile sul terminale remoto.

In caso positivo, lo stesso terminale attenderà il tempo equivalente ad uno squillo per poi rifiutare la chiamata, l’equivalente di una linea occupata.

Determinare se il terminale corrispondente al numero ha copertura GSM sufficiente per la gestione in entrata ed uscita di chiamate vocali e SMS.

L’utilizzo di ecosistemi tecnologici M2M più evoluti consentirebbe controlli più efficaci ed immediati, ma l’indicazione in questo caso è quella di rendere operativo un sistema automatico nel breve termine evitando gli interventi di recupero, aggiornamento e reinstallazione del parco terminali già in esercizio, molti dei quali collegati a macchine operatrici a lavoro in cantieri lontani dalla sede aziendale o comunque difficili da poter raggiungere.

Applicazione: controllo del tono libero su terminali installati in cantiere

Condizioni per il tono libero

Il modello del terminale, utilizza una sezione di radiocomunicazione GSM compatibile con rete e SIM ordinarie degli operatori italiani (TIM, Vodafone, Wind) che è possibile interrogare via SMS per ricevere indicazioni sullo stato di ingressi, uscite ed altri dati. L’installazione tipica è eseguita a bordo di macchine da cantiere, a volte la posizione delle stesse a malapena consente una copertura del segnale radiomobile (es. pala meccanica al lavoro in galleria); quindi è indispensabile che un’interrogazione dalla sede sia subordinata alla bontà del segnale di rete agganciato dal terminale, per poter garantire una risposta.

La condizione ideale è che a chiamata vocale diretta, il numero risulti agganciato alla rete (ovvero raggiungibile); il terminale si preoccuperà di attendere poco tempo e rifiutare la chiamata. Quindi al chiamante la centrale telefonica segnalerà almeno un tono libero.

Tutte le altre condizioni differenti sono da considerarsi come eventi che escludono il terminale come al momento raggiungibile.

Tutto questo deve rispondere a logiche programmabili, automatiche o sovrintese da personale aziendale.

FreeSWITCH e tone_detect

Dopo aver percorso alcune opzioni, incluse quelle dei test per il tono libero con modem voce PSTN, ho scelto l’uso di FreeSWITCH poiché consente un apprendimento relativamente rapido, un buon sviluppo di applicazioni personalizzate, non richiede hardware specifico e nonostante la documentazione non sia sempre chiara gli sforzi della comunità alla base della piattaforma sono enormi. Inoltre, con l’integrazione FreeSWITCH si apre il sistema verso scenari applicativi inediti.

Per poter effettuare delle chiamate in uscita, testando alcuni fornitori VoIP, ho integrato i servizi di Messagenet che è risultato quello meglio corrispondente alle aspettative.

Il componente su cui verge l’oggetto dell’articolo è tone_detect al quale passare la frequenza di riferimento del tono libero a 425 Hz ed altri parametri minori. La ricetta è contenuta come configurazione di una extension nel dialplan (prefisso 9900), che vado a richiamare in modo asincrono dal sistema con la riga

fs_cli -x "originate loopback/9900333123456 &echo()"

Proprio all’interno della extension, inserisco delle callback (come ulteriori extension) secondo le quali gestire i diversi casi; segue un estratto della configurazione:

<extension name="ctl_verifica">
 <condition field="destination_number" expression="^9900(\d+)$">
 <action application="set" data="continue_on_fail=true"/>
 <action application="set" data="hangup_after_bridge=true"/>
 <action application="set" data="ctl_chiamato=$1"/>
 <action application="set" data="tone_detect_hits=1"/>
 <action application="set" data="execute_on_tone_detect_1=log 1 *** ONTONEDETECT ***"/>
 <action application="set" data="execute_on_tone_detect_2=transfer ctl_tonolibero"/>
 <action application="set" data="execute_on_media_1=log 1 *** ONMEDIA ***" />
 <action application="set" data="execute_on_media_2=tone_detect tono1 425 w 0"/>
 <action application="set" data="execute_on_media_3=sched_hangup +30 alloted_timeout bleg"/>
 <action application="set" data="execute_on_answer_1=log 1 *** ONANSWER ***" />
 <action application="set" data="execute_on_answer_2=transfer ctl_risponde" />
 <action application="set" data="execute_on_ring_1=log 1 *** ONRING ***" />
 <action application="bridge" data="sofia/gateway/gw_messagenet/$1"/>
 <action application="transfer" data="ctl_inesitato" />
 <action application="log" data="1 B-leg hangup cause: ${bridge_hangup_cause}"/>
 <!--<action application="javascript" data="/opt/freeswitch/report2.js $1 ${bridge_hangup_cause}"/>-->
 </condition>
</extension>

Con la configurazione in uso, viene inoltre superato l’ostacolo della eventuale segreteria dell’operatore telefonico, contenendo le singole extension derivate il comando di hangup prima della chiusura.

Pertanto l’inconveniente relativo ad una singola chiamata è un consumo di 1 secondo nei rari casi che FreeSWITCH non riesca a terminare la chiamata, nell’istante immediatamente successivo all’avviso che introduce il servizio di voicemail dell’operatore di rete. Per evitare questo inconveniente, basta semplicemente che il servizio sia disattivo per ogni SIM della flotta.

WOFF2 e correzione di MIME Type su webserver

WOFF2 è la versione con un algoritmo di compressione aggiuntivo rispetto al Web Open Font Format di base: consente l’incorporazione delle specifiche dei caratteri e dei glifi specifici per i progetti web.

Di recente, oltre che per l’utilizzo proprio, è stata utilizzata come tecnologia alla base dei kit di icone e pittogrammi in comune uso nelle interfacce utente e per la simbologia di bottoni od azioni collegate a link.

woff2

WOFF2 ed il gap attuale

Un problema di occorrenza frequente è presente appunto nel caso di utilizzo delle tecnologie Font Awesome e simili. Quando vengono inclusi i file dei framework in modo statico all’interno di un progetto, senza quindi passare per CDN esterne, ed il webserver non ha una tabella aggiornata per l’associazione di content type, il server ritorna un errore di risorsa non esistente (il canonico errore 404 File Not Found).

Quindi qualora non sia possibile utilizzare una CDN od il progetto necessita di essere appoggiato su un server con servizio HTTP legacy, possono tornare utili le seguenti configurazioni per l’impostazione dei filtri per i tipi di file.

Soluzione per IIS

La motivazione principale che mi ha portato a raccogliere informazioni è stata quando il problema si è presentato per primo con IIS. È stato frustrante continuare a trovare segnalazioni per un file non esistente durante il debug di una app… dovuto ad un semplice gap. Ho quindi utilizzato un file web.config per Internet Information Services simile al seguente:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
 <staticContent>
 <remove fileExtension=".woff2" />
 <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
 </staticContent>
 </system.webServer>
</configuration>

Soluzione per NGINX

In NGINX (non ho verificato l’esistenza del problema), la configurazione equivalente è la seguente:

types {
    application/font-woff2  woff2;
}

Soluzione per Apache

Ecco la versione Apache per una possibile inclusione in file .htaccess (anche in questo caso non ho individuato possibili istanze problematiche, quindi si tratta di una ulteriore equivalenza):

AddType  application/font-woff2  .woff2

Versioni PHP supportate dai principali fornitori hosting e VPS

Tra gli elementi condizionanti la scelta di un particolare fornitore fornitore di servizi tipo hosting o VPS, può essere di aiuto poter conoscere in anticipo le versioni PHP dell’interprete che l’azienda mette a disposizione ai propri clienti.

Nel caso dell’utilizzo di pacchetti standard o di software che richiedono una minima personalizzazione ovvero soluzioni da poter essere installate ed eseguite “chiavi in mano”, una raccolta delle possibilità offerte dal mercato consente di semplificare e velocizzare in particolare i tempi necessari alla messa in linea dei propri progetti.

PHP_Logo

Il progetto phpversions

Il progetto phpversions, patronato da Phil Sturgeon, in estrema sintesi classifica le versioni php disponibili per i più diffusi servizi di hosting e VPS.

Per uno sviluppatore è di indubbio vantaggio poter conoscere il panorama delle versioni offerte dal mercato, riuscendo a determinare indirettamente anche la politica relativa all’aggiornamento ed la pianificazione al supporto contemporaneo di differenti versioni.

Dal punto di vista dell’azienda che offre il servizio hosting, VPS, cloud o PHPaaS che sia, questa utilità può rappresentare un’opportunità per dimostrare il proprio impegno nella fornitura di strumenti e servizi in linea con le richieste e le aspettative dei clienti, sia quelli che sono alla ricerca delle versioni di PHP più recenti verso altri ai quali può interessare il servizio che ne supporta ancora una precedente (es. per software storicizzato o in previsione di refactorying).

Extra

Allo scopo di essere utile anche oltre lo scenario dei servizi offerti da terzi, c’è uno spazio riservato anche al riepilogo delle versioni php disponibili attraverso i repositories delle principali distribuzioni Linux comunemente utilizzate in ambito web (es. CentOS, Debian, Ubuntu), comodo riferimento nel caso di amministrazione diretta delle macchine o informazioni comunque utili come comparazione tra i vendor che tendono a supportare versioni più recenti rispetto ad altri che privilegiano aggiornamenti graduali ed upgrade meno “drastici” in ottica di rilascio di lungo termine.