Configurare XAMPP sul Mac e installarci sopra WordPress

Anzitutto procuriamoci XAMPP dal sito ufficiale. Cliccando sul precedente link ci si troverà di fronte ad una schermata simile:

Selezioniamo la versione più appropriata per il nostro sistema operativo e i nostri scopi; in questa guida io utilizzerò la version indicata con la freccia rossa nell’immagine (XAMPP con PHP 7.3.2, il gruppo a seguire è quello di XAMPP con macchina virtuale).

Una volta scaricato il file selezioniamolo dall’elenco e avviamo l’installazione.

A questo punto clicchiamo sull’installer e autorizziamo l’installazione del programma scaricato da internet.

Adesso si aprirà l’installazione vera e propria e scegliamo di proseguire avanti, come nell’immagine.

Ci verranno chieste una serie di impostazioni da scegliere procedendo avanti. Se non hai particolari esigenze o non sai cosa dovresti scegliere premi tranquillamente next finché non parte l’installazione finale e si giunga alla fine.

A questo punto premiamo su Finish lasciando attiva l’opzione Launch XAMPP. Questo aprirà XAMPP su una schermata simile alla seguente:

Spostiamoci su Manage Servers per avviare i server che ci interessano (ovvero Apache e MySQL).

Per farlo selezioniamo il server MySQL Database e premiamo il tasto Start. Poi selezioniamo il server Apache Web Server e premiamo di nuovo Start.

Una volta avviati correttamente dovremmo vedere al fianco di entrambi un pallino verde. Se così è vuol dire che sono attivi e possiamo procedere oltre.

Adesso torniamo alla schermata precedente e clicchiamo su Open application folder.

Si aprirà la cartella di installazione di XAMPP, qui ci spostiamo su htdocs che è la radice del nostro webserver.

Il contenuto di questa cartella corrisponde all’indirizzo http://localhost oppure http://127.0.0.1

Qui dentro vogliamo creare una cartella dove installeremo WordPress, in modo che sia accessibile all’indirizzo http://localhost/wordpress1

Per farlo clicchiamo col destro e selezioniamo dal menu contestuale Nuova cartella, nominiamo la cartella wordpress1

Adesso lo spazio web è pronto. Dobbiamo solo creare ancora il database. Per farlo andiamo su http://localhost/phpmyadmin. Nella schermata che si apre clicchiamo su Database. Sotto la voce Crea nuovo database inseriamo il nome del database che vogliamo creare, per esempio wordpress1. Il nome del database non deve essere necessariamente uguale al nome della cartella per lo spazio web, li ho messi uguali solo per coerenza logica.

Fatto tutto questo abbiamo preparato spazio web e database per installare il nostro nuovo sito.

Ora dobbiamo procurarci WordPress, quindi andiamo sul sito ufficiale e scarichiamolo dalla sezione download.

Per l’ultima versione in italiano è anche sufficiente cliccare qui.

Spostiamoci su Safari e andiamo all’indirizzo http://localhost/wordpress1. Se abbiamo fatto tutto correttamente dovremmo vedere qualcosa di simile a questo:

Nel mentre il download di WordPress dovrebbe essere terminato, per cui dovremmo vederlo nell’elenco dei download di Safari nel modo seguente:

Clicchiamo col destro sopra il download e selezioniamo Mostra nel finder.

Dovremmo visualizzare qualcosa di simile. Entriamo nella cartella chiamata wordpress.

Dovremmo trovare un elenco di file come quello mostrato di seguito. Selezioniamo tutti i file e spostiamoli nella cartella wordpress1, che abbiamo creato prima in htdocs. Per farlo è sufficiente affiancare le due finestre e con tutti i file selezionati trascinarli da una posizione all’altra.

Fatto questo, prima di ogni altra cosa, dobbiamo dare i permessi di lettura e scrittura per i file nella cartella di installazione. Perciò dal Finder spostiamoci su Vai > Utility e selezioniamo, dalla finestra che si aprirà, il terminale.

Nel terminale digitiamo: sudo chmod -R 0777 

Dopo il 0777 lasciamo uno spazio. Poi affianchiamo la cartella htdocs al terminale e trasciniamo verso il terminale la cartella wordpress1.

Per essere precisi i permessi 0777 su tutta la cartella consentiranno il massimo accesso a lettura e scrittura per tutti gli utenti e tutti file. Di per se non sarebbe l’ideale, ma siccome stiamo lavorando in locale può andar bene. Ovviamente la situazione andrebbe valutata in base all’uso che si fa del computer in questione.

In ogni caso se tutto è andato bene dovremmo vedere qualcosa come:

Premiamo Invio da tastiera e digitiamo la password. ATTENZIONE! La password non verrà mostrata e sembrerà di digitare a vuoto. Digitiamo la password del nostro utente e premiamo invio, anche se apparentemente non sta succedendo niente.

Aspettiamo un attimo perché la procedura finisca e ricompaia nuovamente il cursore sul terminale. Dopodiché torniamo su Safari e aggiorniamo la pagina http://locahost/wordpress1. Dovremmo trovarci di fronte alla seguente situazione:

A questo punto possiamo procedere all’installazione di WordPress. Premiamo sul tasto Iniziamo! che compare sotto il testo introduttivo.

Nella schermata che segue inseriamo i dati nella maniera seguente:

Premiamo su Invia. Se abbiamo messo tutti i campi corretti troveremo la seguente schermata.

Premiamo su Avvia l’installazione. Adesso completiamo la seguente schermata, scegliendo a piacere il nome del sito, il nome dell’utente principale (io ho messo il classico admin), una password (WordPress ce ne suggerirà una abbastanza complessa) e il nostro indirizzo email.

Infine premiamo su Installa WordPress. Se abbiamo eseguito tutto a dovere comparirà la schermata finale di login.

Se installando i plugin o i temi dovesse comparirci una schermata come la seguente:

Premiamo sul tasto annulla e dal terminale che abbiamo usato prima per cambiare i permessi digitiamo i seguenti comandi.

Spostiamoci nella cartella wordpress1 che abbiamo creato con cd wordpress1. Poi digitiamo sudo nano wp-config.php e premiamo il tasto Invio.

Si aprirà l’editor nano sul file wp-config.php.

Subito all’inizio, prima delle impostazioni MySQL, aggiungiamo la seguente riga di codice:

Premiamo i tasto CTRL+S per salvare. Premiamo Invio per confermare la modifica del file.

Fatto questo possiamo tornare ad installare tranquillamente temi e plugin.

[bash] Copiare i file trovati con grep in una cartella di destinazione

L’obiettivo è quello di trovare determinati file con dentro un certo contenuto, utilizzando grep e copiarli in una cartella di destinazione (nel mio specifico caso per fini di backup).

Per farlo con bash ci è sufficiente digitare il seguente codice:

Nota che utilizzo cp -a per copiare tutte le caratteristiche del file, permessi compresi.

[vba] Utilizzare il dizionario nelle macro di Excel per calcolare la media dei voti, in diverse materie per diversi studenti

Propongo un veloce esercizio in VBA sull’utilizzo dei dizionari.

Immaginiamo di avere un elenco di studenti e voti in diverse materie come nell’esempio seguente:

Vogliamo calcolare la media dei voti per ciascun studente in ciascuna materia, mettendo tutto in una tabella tipo pivot nel modo seguente:

La cella gialla è in L10

A tale scopo realizziamo la seguente macro in VBA utilizzando i dizionari. Per usare il dizionario anzitutto aggiungiamo il relativo riferimento da Strumenti > Riferimenti…

Il riferimento che ci interessa è il Microsoft Scripting Runtime, libreria dalla quale andremo a prelevare Scripting.Dictionary

Fatto tutto questo vediamo il codice:

Faccio notare che nel mio esempio la tabella di scrittura parte dalla posizione L10 nel foglio di calcolo attivo.

Quello che abbiamo realizzato è un dizionario di dizionari. Per realizzarlo utilizziamo:

 

Come riempire la soluzione diserbante nel laboratorio in Resident Evil 2 Remake

Resident Evil 2 è pieno di questi squisiti rompicapi e questo in particolare fa eco al cosiddetto enigma delle taniche d’acqua, reso famoso dal film Die Hard. Per chi ancora non lo avesse capito stiamo parlando del macchinario per la soluzione diserbante nel Drug Testing Lab, all’interno del laboratorio sotterraneo dell’Umbrella.

Questo qui insomma. La soluzione all’enigma è semplicissima, esattamente come quella del suddetto indovinello. In pratica bisogna fare nel modo seguente:

Alla partenza siamo in questa situazione. Vediamo che la differenza che c’è tra la soluzione verde e la linea rossa nel primo contenitore è la medesima che c’è tra l’intero primo contenitore ed il secondo. Essendo il liquido sufficiente a riempire tutto il primo contenitore se lo svuotassimo nel secondo contenitore, all’interno del primo resterebbe la quantità che cerchiamo. Notiamo subito che la metà del primo contenitore, piena di liquido per altro, è identica al terzo contenitore. Appurato tutto ciò scambiamo il primo con il secondo e premiamo il tasto verde. Dovremmo ottenere questo:

A questo punto nel secondo contenitore avanza giusto il liquido che c’è tra la linea rossa e la cima. Adesso disponiamo i contenitori nel modo seguente:

E riempiamo il primo contenitore in modo da ottenere questo:

Adesso non ci rimane che spostare al primo posto il terzo contenitore, ed il primo contenitore al secondo posto e poi procedere. La situazione prima di concludere dovrebbe essere questa:

Una volta riversato il liquido dal secondo nel primo avremo finito.

Ordine degli spinotti nella stanza di monitoraggio, Resident Evil 2 Remake

Una volta recuperati gli sei spinotti con le figure degli scacchi, ci si dovrà recare nella Stanza di monitoraggio per azionare il circuito elettrico e aprire la porta.

Sulla parete centrale c’è una bacheca con degli appunti, dove si troveranno gli indizi su come posizionare gli spinotti.

L’appunto recita “Se non sbaglio la torre e il cavallo sono sullo stesso muro, e l’alfiere e la regina non sono l’uno accanto all’altro. La regina e la torre, invece, sono ai lati opposti.

Questo indizio ci porta ad un’unica scelta possibile (bisognerà estrarre il cavallo dalla posizione attuale e spostarlo), che è la seguente, sulle due pareti:

Sulla parete alla nostra sinistra, guardando frontalmente quella centrale, vanno messi alfiere, torre e cavallo. Sulla parete alla nostra destra vanno invece pedone, regina e re.

[linux] Rinominare i file da terminale con bash sostituendo uno o più caratteri nel nome

Immaginiamo di voler sostituire un particolare carattere nel nome dei file dentro ad una cartella. Nel mio caso in tutti i nomi è presente una @ che voglio trasformare in uno _.

Utilizzando semplici comandi di bash è possibile fare questa operazione da terminale nel modo seguente:

 

[linux] Cercare file con caratteri speciali nel nome del file

Oggi mi è capitato un curioso problema: elaborando programmaticamente un lungo elenco di file ho notato che alcuni file avevano degli insidiosi spazi bianchi tra le lettere ed i numeri. Indagando più a fondo ho notato che non si trattava di comuni spazi bianchi, bensì di caratteri speciali che venivano visualizzati come spazi bianchi.

Per trovare file con caratteri speciali quali i caratteri di controllo si può usare il seguente comando:

Con il seguente comando invece è possibile recuperare sia i caratteri non-ascii che i caratteri di controllo, sia in file che cartelle:

 

[wordpress] Aggiungere foglio di stile in ultima posizione nel head (intestazione)

Una cosa molto seccante in WordPress, quando si va a modificare il foglio di stile di un tema (specialmente se un tema child), è dover forzare le proprietà con l’istruzione !important, perché altrimenti prevalgono gli stili di plugin o altri elementi che sono stati aggiunti in precedenza al tema.

Una soluzione che adotto spesso è quella di aggiungere un mio foglio di stile supplementare e farlo apparire in ultima posizione rispetto ai fogli di stile richiamati nell’intestazione. In questo modo le proprietà ivi inserite potranno sovrascrivere senza difficoltà quelle dei precedenti fogli.

Per farlo anzitutto posizioniamoci nella cartella del nostro tema e aggiungiamo un foglio di stile, per esempio stile-finale.css

Do per scontato che le modifiche vengano fatte ad un tema child, ma vale lo stesso con un tema genitore.

A questo punto andiamo dentro functions.php e aggiungiamo il seguente codice in fondo:

Il 9999 sta a rappresentare l’ordine in cui verrà inserito il foglio di stile e si suppone che non ci siano altri 9.999 fogli già esistenti.

Fatto! 🙂

[magento] Errore SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘0009032’ for key ‘UNQ_SALES_FLAT_ORDER_INCREMENT_ID’

Soluzione1: Questo errore si presenta quando si effettua un ordine su Magento, si viene indirizzati al pagamento, ma il pagamento non va a buon fine e si viene rimandati indietro sul negozio. Per risolvere questo problema è sufficiente modificare il file app/code/core/Mage/Sales/Model/Resource/Quote.php come indicato di seguito

Per risolvere il problema posizioniamoci nella cartella principale del negozio in Magento. Dopodiché andiamo a modificare il file app/code/core/Mage/Sales/Model/Resource/Quote.php

Apriamolo e cerchiamo la seguente parte di codice

Alla linea quattro modifichiamo

In modo che diventi:

Salviamo il tutto.

Soluzione2: Questo errore si presenta quando per qualche ragione sono stati inseriti ordini sopra l’ultimo incrementale registrato in eav_entity_type. Per risolvere il problema è sufficiente incrementare sopra l’ultimo valore registrato il valore dell’incrementale. 

Di seguito discutiamo il problema e la soluzione nel dettaglio.

Anzitutto l’errore che si presenta è simile a questo:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0009032' for key 'UNQ_SALES_FLAT_ORDER_INCREMENT_ID', query was: INSERT INTO sales_flat_order (coupon_code, protect_code, shipping_description, is_virtual, store_id, customer_id, base_discount_amount, base_grand_total, base_shipping_amount, base_shipping_tax_amount, base_subtotal, base_tax_amount, base_to_global_rate, base_to_order_rate, discount_amount, grand_total, shipping_amount, shipping_tax_amount, store_to_base_rate, store_to_order_rate, subtotal, tax_amount, total_qty_ordered, customer_is_guest, customer_note_notify, customer_group_id, quote_id, base_shipping_discount_amount, base_subtotal_incl_tax, shipping_discount_amount, subtotal_incl_tax, weight, customer_dob, increment_id, applied_rule_ids, base_currency_code, customer_email, customer_firstname, customer_lastname, customer_middlename, customer_prefix, customer_suffix, customer_taxvat, discount_description, global_currency_code, order_currency_code, remote_ip, shipping_method, store_currency_code, store_name, x_forwarded_for, customer_note, created_at, updated_at, total_item_count, customer_gender, hidden_tax_amount, base_hidden_tax_amount, shipping_hidden_tax_amount, base_shipping_hidden_tax_amnt, shipping_incl_tax, base_shipping_incl_tax, gift_message_id, payment_fee_amount, base_payment_fee_amount, payment_installment_fee_amount, base_payment_installment_fee_amount, payment_tax_amount, base_payment_tax_amount, referral_code, ebizmarts_abandonedcart_flag, payment_fee_tax, base_payment_fee_tax, payment_percentage_fee, base_payment_percentage_fee) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '1975-10-01 00:00:00', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '2018-11-28 11:14:46', '2018-11-28 11:14:46', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Questo errore si presenta perché si sta cercando di inserire una chiave duplicata in sales_flat_order. Prima di tutto verifichiamo la cosa spostandoci in sales_flat_order ed effettuando la seguente query:

Nel mio caso il risultato della query era 10.009. Adesso spostiamoci su eav_entity_store. Qui dovremmo vedere una tabella con tutti gli incrementali. Cerchiamo quello che ci interessa. Per trovarlo guardiamo i campi entity_type_id e store_id. Gli entity_type_id hanno come riferimento la tabella eav_entity_type.

Per esempio il codice 5 corrisponde agli ordini, mentre il codice 6 alle fatture/ordini.

Nel mio caso mi accorgo che increment_last_id è su 9033, mentre il massimo valore inserito in sales_flat_order è di 10.009. Quindi mi è sufficiente portare questo valore al di sopra di quello attuale, per esempio impostandolo su 10.010.

Una volta fatto il problema è risolto.