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

Scrivere un plugin WordPress direttamente dalla Dashboard andando subito al nòcciolo e saltando tutte le parti noiose

Aggiornamento del 29/01/2021: i dettagli sono prima della conclusione.

Volevo aggiungere una sezione link a questo sito per archiviare le notizie interessanti che incontro in giro per la Rete e per avere un unico indirizzo da condividere su Facebook e Linkedin.

Potevo installare un plugin già pronto, ma avrei dovuto cercarne e trovarne uno adatto, oppure potevo scriverne uno io, ma avrei dovuto preparare la struttura di cartelle e file necessari per il codice che spesso contiene ripetizioni di blocchi simili {chi lo ha già fatto sa di cosa sto parlando ;-)}.
Entrambe le soluzioni hanno dunque qualche punto debole.

Ho deciso quindi di provare ad usare i plugin Pods e Code Snippets per prendere il meglio da ciascuna delle due opzioni precedenti: ottenere un plugin che faccia esattamente quello che mi serve concentrandomi solo sul codice che implementa il comportamento del modulo.

Continua a leggere Scrivere un plugin WordPress direttamente dalla Dashboard andando subito al nòcciolo e saltando tutte le parti noiose