Come programmare una scheda ESP 32 con PlatformIO e Visual Studio Code

PlatformIO è un ambiente di sviluppo per microcontrollori disponibile già da diversi anni e che quindi ha già raggiunto una certa stabilità. Rispetto all’IDE di Arduino offre il vantaggio di poter isolare le librerie di ciascun progetto evitando così il rischio che l’aggiornamento di una di esse possa creare errori nei progetti più vecchi che la usavano.

Continua a leggere Come programmare una scheda ESP 32 con PlatformIO e Visual Studio Code

Sostituire Google Analytics con Matomo Analytics per WordPress e risolvere in una volta problemi di Privacy e di configurazione di Google Analytics 4

L’uso di Google Analytics è sempre più critico dal punto di vista del GDPR, in più è stata annunciata la sospensione del servizio di Universal Analytics (la versione 3) da luglio 2023.

Se poi si vogliono un po’ di dati storici per poter fare confronti bisogna cominciare a pianificare la migrazione a breve perché non sarà possibile trasferire i dati.

In più la configurazione della nuova versione 4 però non è affatto immediata come la 3 e per chi come me è interessato principalmente alle statistiche sugli accessi delle pagine -e ha come mantra “semplificare con la tecnologia”- il passaggio alla versione 4 non è esattamente la scelta ideale. 🙂

Ero quindi alla ricerca di una soluzione alternativa rispettosa della Privacy e già mi stavo rassegnando a dovermi fare il parsing dei log del server quando mi sono imbattuto in Matomo (che forse conosci con il vecchio nome Piwik).

È un completo sistema open-source di analisi degli accessi ad un sito che normalmente richiede un server dedicato. Esiste però un comodissimo plugin Matomo Analytics che ne fornisce una versione autonoma e che non richiede altre installazioni.

Continua a leggere Sostituire Google Analytics con Matomo Analytics per WordPress e risolvere in una volta problemi di Privacy e di configurazione di Google Analytics 4

Due importanti novità per Python: la possibilità di eseguire il programma nel browser e l’aumento della velocità

La prima è forse la più rivoluzionaria. Si tratta della possibilità di eseguire il programma Python direttamente nel browser.

In questi giorni forse hai sentito parlare di PyScript. Viene definito un framework (ma io forse la definirei una libreria) per costruire pagine HTML interattive usando Python anziché Javascript.

Il vero progetto rivoluzionario però secondo me è quello che sta alla base di PyScript, cioè Pyodide.

Questo è un porting di Python per WebAssembly. Significa che una volta scaricato puoi eseguire il programma Python direttamente nel browser.

Provare per credere!

Lo scaricamento richiede qualche istante e questo è il motivo per cui secondo me al momento possiamo considerare PyScript solo un interessante esperimento.

La seconda notizia è che nelle prossime versione che verranno rilasciate ci sarà un significativo incremento della velocità di esecuzione.

Questo è forse il punto debole di Python anche se devo dire che facendo attenzione e adottando opportuni accorgimenti in tanti anni non mi è mai capitato di vedere naufragare un progetto per questo motivo.

No ci resta che attendere per verificare se sarà veramente così. 🙂

Come unire o dividere documenti PDF in Windows 10

A volte capita di dover modificare la struttura dei documenti PDF. Spesso mi capita di dover eliminare della pagine da un documento oppure di unirne diversi un uno solo per comodità.

Esistono molti programmi per svolgere queste funzioni, sia online che offline, io mi trovo molto bene con PDF Arranger. Si tratta di una interfaccia grafica scritta in Python di pikepdf che è una libreria piuttosto potente per la manipolazione dei documenti PDF ed è scritta in Python e C++.

Di PDF Arranger esiste anche la versione già compilata per Windows 10 e -quello che mi piace di più- ne esiste anche una versione portabile che non richiede installazione.

Possiamo scompattare il file .ZIP in una cartella a nostro piacimento (io ad esempio sotto la cartella “Programmi” ho creato la cartella “portables” e lì la cartella “pdfarranger-1.7.1”) e lanciare pdfarranger.exe.

Per comodità ho creato anche un link nel Menù Start all’eseguibile così è più semplice l’esecuzione.

Quando vorremo eliminare tutto basterà cancellare la cartella “pdfarranger-1.7.1” (che io ho creato in “Programmi/portables”) ed sarà come se non avessimo mai installato nulla. 🙂

Aggiungere una finestra di conferma quando si usano le select multiple nella SQLFORM.grid di Web2py

La SQLFORM.grid di Web2py è una funzionalità davvero potente, permette di avere una pagina di gestione dei record di una tabella già pronta e funzionante.

Permette anche di aggiungere un check field ad ogni riga per poter eseguire, in una sola operazione, una operazione su tutti i record selezionati. Un caso tipico è la cancellazione.

Dato che la cancellazione non è una operazione reversibile però è bene chiedere una conferma aggiuntiva prima di eseguirla per essere sicuri delle intenzioni dell’utilizzatore.

Questa funzionalità purtroppo non è prevista.

Pubblico qui come ho realizzato io questa funzione visto che non ho trovato in rete soluzioni già realizzate.

Continua a leggere Aggiungere una finestra di conferma quando si usano le select multiple nella SQLFORM.grid di Web2py

Come automatizzare le operazioni di un programma Windows 10

Quando usavo Linux ho sempre tenuto diversi widget attivi per monitorare le attività del computer.

Anche in Windows 10 esiste qualcosa di simile, si chiama Gestione Attività, ma se lo lanciamo all’avvio non lo si riesce a far scomparire dalla barra delle applicazioni attive. Per farlo scomparire bisogna aprirlo e poi ridurlo ad icona (dopo aver impostato questo comportamento nelle configurazioni).

Inutile dire che la cosa è abbastanza fastidiosa.

Per il risolvere il problema ho usato AutoHotKey (che uso anche per impostare le scorciatoie per le lettere accentate maiuscole e i caratteri speciali).

Mi è bastato aggiungere le righe seguenti allo script di configurazione eseguito all’avvio:

WinWait, Gestione attività
Sleep, 300
WinRestore, Gestione attività
Sleep, 300
WinMinimize, Gestione attività

Se ti serve qualche indicazione su come eseguire lo script di configurazione all’avvio la puoi trovare nel post sulle lettere accentate e i caratteri speciali.

Disabilitare il plugin All In One SEO di WordPress in una singola pagina

Per aggiungere la sezione link a questo sito ho usato due plugin che mi hanno permesso di lavorare sempre dalla dashboard senza bisogno di scrivere nuovi plugin (trovi i dettagli in questo post).

Con il passaggio alla versione 4 del plugin All In One SEO, però, è stata eliminata la possibilità di poterne disabilitare le funzioni in una singola pagina (che io usavo per modificare titolo e proprietà dell’OpenGraph di Facebook) e, in più, è stata anche modificata la riscrittura dei titoli delle pagine.

Queste modifiche hanno reso non più completamente funzionante la mia sezione link ed ecco dunque le modifiche che ho dovuto fare.

Continua a leggere Disabilitare il plugin All In One SEO di WordPress in una singola pagina

Incorporare un sito Odoo 12 in un iframe di un sito esterno

In un gestionale che ho scritto in Web2py incorporo alcune pagine di un’installazione di Odoo 12 che risiede su un server diverso.

Le recenti politiche di sicurezza dei browser hanno reso impossibile questo comportamento a meno di una autorizzazione esplicita del sito incorporato.

Il problema è che né Odoo 12 né la versione installata del server Nginx che uso come reverse proxy gestiscono questa possibilità.

Come fare?

Continua a leggere Incorporare un sito Odoo 12 in un iframe di un sito esterno

Rendere accessibile da Internet un server connesso tramite protocollo NAT o firewall con IP dinamico

Può essere necessario dover accedere ad un server che sia collegato ad Internet ma che non disponga di un indirizzo IP pubblico e statico. Potrebbe avere un indirizzo IP dinamico oppure potrebbe capitare di dover utilizzare un router per telefonia mobile che spesso usa il protocollo NAT, condividendo quindi lo stesso indirizzo IP con altri router.

Se abbiamo a disposizione un secondo server con indirizzo IP pubblico e statico lo possiamo usare come ponte per collegarci al primo server.

Continua a leggere Rendere accessibile da Internet un server connesso tramite protocollo NAT o firewall con IP dinamico