[wordpress] Got error ‘PHP message: PHP Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0\n’

Problema: WordPress risulta bloccato on errore Server Error 500 oppure (nel registro degli errori) con Got error ‘PHP message: PHP Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0\n’

Questo problema potrebbe dipendere dalla configurazione della cache internamente a WordPress oppure da qualche plugin ad essa collegato. In generale l’errore si risolve modificando il file wp-config.php

Aprile il file e aggiungiamo, oppure modifichiamo se già esiste, la seguente riga:

In questo modo aumenteremo la memoria a disposizione della piattaforma per gestire la cache e il problema dovrebbe risultare risolto.

[vba] Creare una funzione che accetti un numero indefinito di parametri

Per questo esercizio vediamo come creare una funzione personalizzata simile (perché non andremo ad implementare tutte le alternative) al SOMMA.PIÙ.SE in VBA per Excel.

Anzitutto individuiamo le criticità:

  1. Avremo bisogno di accettare un range per la somma ed n coppie di parametri come intervalli e criteri, la nostra funzione avrà quindi la forma di FUNZIONE(somma, [intervallo 1], [criterio 1], …)
  2. I criteri possono essere numerici oppure stringhe di confronto, come per esempio “>2”

Anzitutto vediamo come creare una funzione che accetti n parametri come abbiamo definito di sopra. Per cui digitiamo in VBA:

In questo caso abbiamo inserito il minimo indispensabile, definendo il risultato come un Double, dichiarando internamente una variabile totale ed impostandola su 0. Questa variabile la utilizzeremo in seguito. L’argomento somma è di tipo Range (qui occhio agli indici, come vedremo tra poco!) e poi segue un vettore di parametri args definiti come Variant.

Per scorrere i vari parametri possiamo usare l’istruzione:

A questo punto vogliamo costruire un vettore di criteri lungo quanto l’intervallo della somma e che per ogni chiave contenga un valore equivalente a 0 oppure ad 1, in funzione che si debba o meno sommare il valore nell’intervallo somma.

Per fare questo definiamo:

Con il metodo somma.count misuriamo la dimensione del Range somma, attenzione perché il range si muove da 1 fino a somma.count, mentre il nostro vettore criteri andrà da 0 fino a somma.count – 1

Infine impostiamo tutto il vettore criteri() su 1, questo ci servirà tra poco per le operazioni logiche.

A questo punto non ci rimane che valutare tutti i criteri, tenendo presente che vanno a coppie di intervallo criteri e criterio. Perciò utilizzeremo l’istruzione:

Gli intervalli dei criteri si trovano in posizioni pari, mentre il criterio in posizione dispari.

Infine utilizzeremo il metodo Evaluate sfruttando la funzione SE di Excel per valutare ogni criterio, nel modo seguente:

Faccio notare che in Evaluate va scritta la funzione col nome in inglese. Dal momento che i criteri possono essere numerici oppure stringhe, come abbiamo detto all’inizio, dobbiamo distinguere tra le due cose e quindi scriveremo:

Infine ricordiamoci che tutti i criteri devono essere validi, quindi per modificare ogni posizione del vettore criteri() useremo il prodotto. In questo modo se sono tutti veri risulterà 1, un prodotto di tutti 1 insomma, mentre se anche un solo criterio sarà falso allora il prodotto risulterà 0, dal momento che basta uno 0 nel prodotto per azzerare tutto.

Detto tutto ciò la nostra funzione finale sarà simile a questa:

Inutile dire che la funzione potrebbe essere ulteriormente affinata per coprire tutti i possibili casi in cui può essere utilizzata SOMMA.PIÙ.SE 😉

[magento] Errore in fase di download degli ordini

Problema: quando si cerca di scaricare l’elenco degli ordini viene restituito il seguente errore MAGENTO – Errore in fase di download degli ordini System.ServiceModel.FaultException: SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine, query was: DESCRIBE sales_flat_order

Soluzione: il disco del server è pieno, probabilmente riempito dai file log di Magento stesso e non è possibile effettuare la maggior parte delle operazioni. Basta cancellare i file log oppure liberare spazio sul server.

La seguente soluzione è stata testata su Magento 1.9.3 e sistema operativo CentOS.

Anzitutto premetto che l’errore non è per forza causato da Magento, ma potrebbe trattarsi del server che per qualche motivo si è riempito (per esempio a causa di aggiornamenti). Anzitutto verifichiamo la nostra situazione digitando su server linux:

Dovremmo vedere un risultato simile al seguente:

Notiamo come la partizione / sia montata su /dev/mapper/centos-root al quale rimangono disponibili solamente 20KB di spazio.

Nella maggior parte dei casi è altamente probabile che i log di magento abbiano saturato lo spazio a disposizione. Per verificarlo spostiamoci su /var/www/sito_magento/var/log.

Digitiamo:

In questo modo dovremmo vedere qualcosa di simile a questo:

Notate che il file system.log ha superato l’assurda dimensione di 57GB! A questo punto puliamo tutti i file log, eventualmente li possiamo prima salvare da qualche parte se lo riteniamo necessario. Digitiamo:

In questo modo cancelleremo tutti i file log presenti nella cartella.

Verifichiamo nuovamente la situazione digitando:

Dovremmo vedere qualcosa di simile a quanto segue:

Notiamo che si sono liberati 56GB e abbiamo nuovamente il 44% dello spazio a disposizione.

[VBA] Aggiungere nuovo foglio con data corrente in Excel

Immaginiamo di voler aggiungere, in modo programmatico, un nuovo foglio con un nome e la data corrente, per esempio IMPORTAZIONE 10 09 2018.

Quello che vedremmo come risultato nella cartella di lavoro in Excel sarebbe qualcosa di analogo:

Per farlo costruiamo una funzione in VBA nel modo seguente:

Testiamo la funzione mettendola dentro una sub:

Come è possibile notare la funzione restituisce il riferimento al nuovo foglio creato, che possiamo utilizzare nella sub di esempio per scrivere, per esempio, dentro ad una cella.

Se volessimo aggiungere un controllo, nella solita funzione CreaNuovoFoglio, perché non ci siano fogli duplicati, sarebbe sufficiente modificare la funzione nella maniera seguente:

In questo modo al nome del foglio viene posposto un termine n-simo, in questo caso (1), (2) ecc. Se lo si desidera chiaramente si può aggiungere qualunque termine oppure decidere di interrompere l’operazione.

[linux] Impostare timout SSH su Putty

Per evitare che la connessione SSH si chiuda continuamente, oltre ad allungare il timeout sul nostro server, possiamo impostarlo anche da Putty.

Per farlo andiamo su Putty > Connection

Impostiamo Seconds between keepalives(0 to turn off) da 0 a 30 (aumentiamo o diminuiamo in base alle esigenze)

Spuntiamo la casella: Enable TCP_keepalives (SO_KEEPALIVE option)

Salviamo il tutto nel profilo di sessione.

[ubuntu] Aumentare tempo di timeout da SSH

Problema: la connessione SSH va in timeout e bisogna effettuare nuovamente l’accesso.

Per modificare il timeout è sufficiente modificare il file /etc/ssh/sshd_config digitando

A questo punto aggiungiamo al file le seguenti due righe:

Il primo parametri imposta il server affinché invii pacchetti null ogni 120 secondi al client, mentre il secondo imposta l’interruzione della connessione dopo 720 pacchetti inviati a vuoto. In questo modo la connessione si interromperà dopo 720 x 120 = 86.400 secondi, ossia dopo 24 ore.

Una volta apportate tutte le modifiche salviamo e digitiamo:

In questo modo riavvieremo il servizio SSH.

Aruba, errore FTP 550 Can’t read directory: access denied

Problema: utilizzando FileZilla non si riesce a connettersi al server web su Aruba

Soluzione: aggiungere il proprio indirizzo IP agli IP autorizzati all’accesso via FTP dal panello di controllo

Per molti server Aruba ha attivo un servizio di filtro FTP che impedisce accessi non autorizzati, servizio molto utile per implementare il livello di sicurezza su uno dei protocolli più bucati di sempre.

Per aggiungere il proprio indirizzo IP a quelli autorizzati è sufficiente recarsi nel panello di controllo di Aruba.

Una volta dentro selezionare Gestione Accessi FTP.

Si presenterà una schermata simile a questa:

Premiamo su Abilita all’accesso FTP (questo abiliterà l’indirizzo IP mostrato che è anche quello da cui ci stiamo collegando). Altrimenti possiamo aggiungere manualmente un indirizzo IP cliccando poi su Aggiungi IP.

Dopodiché premiamo su Salva ed il gioco è fatto.

Adesso possiamo collegarci in FTP al nostro hosting.

[linux] Cercare testo dentro ai file in modo ricorsivo

Problema: Vogliamo cercare una porzione di testo dentro a tutti i file in una cartella e in tutte le sottocartelle

Soluzione: è sufficiente utilizzare il comando grep, nel modo seguente

Il parametro -R effettuerà una ricerca ricorsiva in tutte le sottocartelle, tra virgolette inseriamo il testo da cercare, il . (punto) indica che la ricerca debba cominciare dalla cartella corrente. 

Possiamo ovviamente indicare altre cartelle con:

 

Quanta energia consuma un PC in un anno?

Vi siete mai chiesti quanta energia consuma in media un computer all’anno? Chiaramente il consumo dipende sia dall’utilizzo che dalla potenza dell’alimentatore; per essere precisi un classico alimentatore da 450/500W non consuma energia sempre alla massima potenza, ma in base al carico computazionale sulla macchina. Per esempio se si gioca ad un videogioco si consuma più energia che se il computer rimane in stand-by.

Nel mio caso specifico lascio il computer di casa acceso anche quando non lo uso, spesso per compilare programmi o essere semplicemente disponibile da remoto.

In pratica questi sono i dati di un computer che è stato acceso per 365 giorni 24 ore al giorno. Per il calcolo del costo è stato utilizzato un parametro di 0,14 €/kWh.

Chiaramente questo risultato non sarà identico per tutti, ma possiamo dire che in media un computer lasciato acceso tutto il giorno ed utilizzato in modo mediamente intensivo consumi circa 500kWh all’anno, oppure circa 40kWh al mese.

Per confronto di seguito riporto invece i dati di un server Dell PowerEdge T110II (Intel® Xeon® Processor E31270v2, 4C/8T, 3.50GHz, 8M Cache, 69W, Turbo; 16GB Memory (2x8GB) 1600Mhz Dual; 2TB, SATA, 3.5in, 7.2K RPM) che gestisce un dominio con 15 utenti con funzionalità principale di server dati.

Anche in questo caso il server è rimasto acceso per 365 giorni 24 ore al giorno. Il consumo totale è stato di 270,15 kWh.

In pratica giocare ai videogiochi costa più che gestire una piccola rete aziendale! 

[joomla] Errore ERR_CONTENT_DECODING_FAILED su Chrome in Joomla 3.x

Problema: Quando si tenta di effettuare il login dal frontend si incorre nell’errore ERR_CONTENT_DECODING_FAILED su Chrome, mentre la pagina appare tutta bianca

Soluzione: disabilitare la compressione GZIP e pulire la cache

Quando si tenta di effettuare il login dal frontend di Joomla si potrebbe incorrere in una pagina vuota oppure nell’errore ERR_CONTENT_DECODING_FAILED. Cancellando l’URL e tornando alla homepage il login risulta effettuato e si può tornare a navigare.

Per risolvere il problema dovrebbe essere sufficiente disabilitare la compressione GZIP andando su Sistema > Configurazione globale > Server.

A questo punto andiamo su Sitema > Pulisci cache, selezioniamo tutte le voci e poi premiamo su Elimina.

Fatto tutto questo il problema dovrebbe risultare risolto.