Ultimi 100 articoli

Mattepuffo's logo
Aggiungere virgole ad una lista HTML con CSS

Aggiungere virgole ad una lista HTML con CSS

Ho scoperto che i CSS in realtà sono più "potenti" di quello che sembra, e che tante cose che facciammo ad esempio in Javascript, le possiamo direttamente con qualche trick.

Ad esempio, oggi aggiungiamo le virgole ad una lista HTML; in genere per farlo usiamo il linguaggio lato server (perchè magari estraiamo la lista da db e poi la elaboriamo).

Mattepuffo's logo
Creare JSON complessi in Python

Creare JSON complessi in Python

Questi giorni sto lavorando molto con Woocommerce e le sue API per importare i prodotti.

Visto che PHP ogni sfarfalla, stavo vedendo di farlo con Python.

Oggi non vederemo come importarli, ma solo come creare JSON complessi; come struttura di esempio prenderemo i prodotti di Woocommerce (o quanto meno una parte).

Mattepuffo's logo
Visualizzare le icone sul desktop in KDE Plasma

Visualizzare le icone sul desktop in KDE Plasma

Ogni distribuzione Linux ha le sue configurazioni standard, che cambiano anche se si usa lo stesso DE.

Ad esempio in openSUSE con KDE Plasma, una volta impostato il desktop classico, ci sono già le icone.

Su Arch Linux no; vediamo come ricrearle.

Mattepuffo's logo
Cambiare logo in Wordpress con PHP

Cambiare logo in Wordpress con PHP

Su un ecommerce che sto sviluppando in Wordopress ho la necessità di cambiare il logo che si trova nell'header a seconda della pagina in cui mi trovo.

Nello specifico devo andare a ricercare il brand o come comincia il codice del prodotto che sto visualizzando.

Tutto questo possiamo farlo con qualche riga di codice PHP.

Mattepuffo's logo
Visualizzare le date di ultima modifiche delle tabelle in MySQL

Visualizzare le date di ultima modifiche delle tabelle in MySQL

Cercando di capire come funzioni alcuni meccanismi dietro le quinte di Wordpress (e sono sempre più convinto che per certi versi sia meglio scrivere tutto custom), avevo bisogno di visualizzare la data di modifica delle tabelle di un database.

In modo da vedere quali tabelle vengono modificate quando si lancia una procedura.

Mattepuffo's logo
Clonare oggetti in Javascript

Clonare oggetti in Javascript

Ho scoperto la funzione Object.assign(), che ci consente di eseguire diverse operazioni su oggetti in Javascript.

Oggi vediamo come usarlo per clonare un oggetto; nel caso specifico, stavo su un progetto Angular in cui passo un oggetto ad un componente, per lavorarci sopra.

E poi riassegnarlo.

Mattepuffo's logo
Creare un catalogo di Facebook XML con PHP

Creare un catalogo di Facebook XML con PHP

Facebook permette di creare i cataloghi in diversi formati.

Noi oggi vediamo il formato XML, che deve rispettare le specifiche ATOM/RSS.

Questo perchè è più facile da gestire, e permette di impostare gli aggiornamenti automatici, senza che l'utente ricarichi i prodotti.

Mattepuffo's logo
Eseguire query multiple in PHP e PDO

Eseguire query multiple in PHP e PDO

Supponiamo di dover eseguire due query diverse consecutivamente; a esempio due update del genere:

UPDATE persone SET abilitato = 0;
UPDATE persone SET abilitato = 1 WHERE id = 3;

Come vedete sono due istruzioni diverse, quindi non parliamo della stessa istruzione ripertuta con valori diversi.

Mattepuffo's logo
String pad in C#

String pad in C#

In C# abbiamo i metodi String.PadLeft e String.PadRight per fare il padding delle stringhe.

In sostanza si tratta di creare una string a lunghezza fissa, riempiendo i caratteri "vuoti" con una striinga.

Mattepuffo's logo
Introduzione a Sanic in Python

Introduzione a Sanic in Python

Sanic è un web server e web framework per Python.

Ha una curva di apprendimento abbastanza "morbida", è veloce, ha molti concetti avanzati, ed è totalmente asincrono.

Anche il deploy sembra essere facile, cosa molto importante (in Python mi è capitato spesso che il problema fosse proprio il deploy).

In sostanza vale la pena provarlo.

Mattepuffo's logo
Cambiare dinamicamente la Parent Activity in Android e Java

Cambiare dinamicamente la Parent Activity in Android e Java

Quando creiamo una Activity in Android, dobbiamo impostarla anche nel manifest.

Qui indichiamo anche la parent activity, che è sostanzialmente quella a cui si ritorna:

        <activity
            android:name=".LogsActivity"
            android:configChanges="orientation"
            android:parentActivityName=".MainActivity"
            android:screenOrientation="portrait">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>

Mattepuffo's logo
Cercare files in Java con Files.find

Cercare files in Java con Files.find

Il metodo Files.find() è disponibile già da Java 8, ed è molto comodo per cercare files usando diversi filtri.

Oggi vediamo quattro metodi, oguno con un fitro di ricerca diverso:

  • per nome
  • per estensione
  • per dimensione
  • per data di creazione

Mattepuffo's logo
String pad in VB.NET

String pad in VB.NET

In VB.NET abbiamo i metodi String.PadLeft e String.PadRight per fare il padding delle stringhe.

In sostanza si tratta di creare una string a lunghezza fissa, riempiendo i caratteri "vuoti" con una striinga.

Mattepuffo's logo
Validazione in Kotlin con Valiktor

Validazione in Kotlin con Valiktor

Ho scoperto una libreria molto utile e semplice da usare per la validazione dei dati in Kotlin: Valiktor!

Se usate Maven aggiungete questa dipendenza al vostro pom.xml:

<dependency>
   <groupId>org.valiktor</groupId>
   <artifactId>valiktor-core</artifactId>
   <version>0.12.0</version>
</dependency>

Mattepuffo's logo
Autenticazione HTTP con PHP

Autenticazione HTTP con PHP

L'altro giorno mi sono imbattuto in $_SERVER['PHP_AUTH_USER'], che ci permette di eseguire una autenticazione HTTP con PHP.

Non ho ben capito quando sarebbe meglio usare questa autenticazione rispetto al classico database, se non per cose molto "veloci" e easy.

Comunque è sempre una cosa in più da sapere.

Mattepuffo's logo
Introduzione al comando basename in Linux

Introduzione al comando basename in Linux

Il comando basename in Linux è molto usato negli script in cui si vuole sostanzialmente usare i nomi delle cartelle / files.

In pratica il comando non fa altro che restituire l'ultima parte di un determinato path.

Mattepuffo's logo
String pad in Python

String pad in Python

Per string pad intendiamo quella operazione con la quale riempiamo una stringa con altri dati per un certo numero di volte.

Detta così vuol dire poco, ma gli esempi ci chiariranno le idee.

Oggi vediamo come fare questa operazione in Python.


Warning: getimagesize(https://www.mattepuffo.com/blog/../IMMAGINI_ARTICOLI/.png): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /web/htdocs/www.mattepuffo.com/home/blog/last.php on line 20
Mattepuffo's logo
Backup e restore di database in PostgreSQL

Backup e restore di database in PostgreSQL

Non sono solito usare PostgreSQL, però mi è capitato di dover fare uno spostamento del db tra due macchine.

E quindi oggi vediamo come eseguire appunto il backup e restore.

Per eseguire il dump possiamo usare pg_dump o pg_dumpall, che estrae tutti i databases esistenti.

Mattepuffo's logo
Filesystem in browser con Javascript e BrowserFS

Filesystem in browser con Javascript e BrowserFS

BrowserFS è un filesystem da usare nel browser con Javascript che sostanzialmente emula le funzioni di Node.js.

E' possibile usarlo tramite CDN, quindi non c'è nulla da installare.

E' possibile configurarlo per usare diversi backends, che potete visualizzare nella documentazione.

Mattepuffo's logo
Informazioni di sistema in Python con platform

Informazioni di sistema in Python con platform

Il modulo platform di Python ci permette di ottenere tantissime informazioni sul sistema sottostante in maniera easy.

L'unica voce che nel mio caso è risultata vuota è quella del processore; sembra che non lo riconosca, anche se è un Intel.

Mattepuffo's logo
Usare un custom FileUpload in PrimeReact

Usare un custom FileUpload in PrimeReact

Oggi vediamo un esempio completo di custom FileUpload in PrimeReact.

Nella documentazione ufficiale, l'esempio è abbastanza scarno, e non si capisce come si deve fare.

Inoltre, la mia esigenza nasce dal fatto che ho dovuto mettere un controllo sulle misure dell'immagine da caricare; mentre il modulo prevede dei controlli solo sulle dimensioni (in termini di peso dell'immagine).

Per controllare la misura dell'immagine useremo gli oggetti FormData, FileReader e Image; essendo Javascript puro, sono compatibili con React.

Mattepuffo's logo
Cancellare iscritti da MailChimp con PHP

Cancellare iscritti da MailChimp con PHP

Le API di MailChimp prevedono due modi per cancellare gli utenti da una lista:

  • l'archiviazione
  • la cancellazione definitiva

Noi procederemo con la prima soluzione, in quanto ci permette di riaggiungere l'utente in maniera semplice; la seconda soluzione, invece, prevede che l'utenta si reiscriva con un form MailChimp creato ad-hoc.

Il tutto usando PHP e cURL.

Mattepuffo's logo
Cambiare DPI a una immagine con C#

Cambiare DPI a una immagine con C#

Devo dire che fare alcune cose in C# rispetto ad altri linguaggi competitors (chi ha detto Java?) è veramente molto semplice.

Oggi vediamo come usare l'oggetto Bitmap per cambiare DPI ad una immagine.

Mattepuffo's logo
Aggiornare da Debian 9 a Debian 10

Aggiornare da Debian 9 a Debian 10

Prima di scrivere questo articolo ho voluto testare la procedura su almeno tre server diversi.

Visto che ha funzionato, vi posto i passaggi che ho seguito (che comunque saranno quasi uguali agli altri) per passare da Debian 9 a Debian 10.

Prima di tutto ricordatevi di eseguire un backup completo; se la procedura va storta, non mi assumo responsabilità, e potete ritornare indietro.

Mattepuffo's logo
Modificare DPI alle immagini con PHP

Modificare DPI alle immagini con PHP

Oggi vediamo come cambiare risoluzione ad una immagine (DPI) usando PHP.

Creeremo una copia del file, e visualizzeremo i DPI di entrambe.

Partiamo con una immagine a 300 DPI, per arrivare ad una uguale a 72 DPI.

Mattepuffo's logo
Creare una pagina di ricerca custom in Wordpress

Creare una pagina di ricerca custom in Wordpress

Quello che vogliamo ottenere oggi è una pagina di ricerca custom in Wordpress, usando il motore di ricerca del CMS ovviamente.

In sostanza vogliamo visualizzare il risultato della ricerca come ci pare.

Prima di tutto dobbiamo creare il file search.php, che sarà richiamato al posto di quello di standard.

Mattepuffo's logo
Aggiungere giorni ad un data in C++

Aggiungere giorni ad un data in C++

Oggi vediamo come aggiungere dei giorni ad una data in C++.

Il tutto richiede veramente poche righe di codice.

I giorni li aggiungeremo a partire dalla data odierna, ed useremo il modulo ctime.

Mattepuffo's logo
Eseguire script remoti tramite SSH e Java

Eseguire script remoti tramite SSH e Java

Oggi vediamo come eseguire degli script remoti tramite SSH e Java.

Daremo per scontato che SSH sia installato e configurato.

Lo script sarà una cosa del genere:

$ cat /opt/script/test.sh
#! /bin/sh

echo "Il tuo nome è $1n";

Mattepuffo's logo
Alternative a Moment.js: Luxon

Alternative a Moment.js: Luxon

Da quanto ho capito Moment.js è destinato a scomparire.

Nel senso che non verrà più aggiornato e supportato.

Però lo stesso sito ufficiale indica delle valide alternative.

Oggi vediamo Luxon!

Mattepuffo's logo
Aggiungere giorni ad un data in Python

Aggiungere giorni ad un data in Python

Oggi vediamo come aggiungere dei giorni ad una data in Python.

Il tutto richiede veramente poche righe di codice.

I giorni li aggiungeremo a partire dalla data odierna, ed useremo il modulo datetime.

Mattepuffo's logo
Aggiungere giorni ad un data in VB.NET

Aggiungere giorni ad un data in VB.NET

Oggi vediamo come aggiungere dei giorni ad una data in VB.NET.

Il tutto richiede veramente poche righe di codice.

I giorni li aggiungeremo a partire dalla data odierna, ed useremo l'oggetto DateTime.

Mattepuffo's logo
Connessione a CouchDB con PHP e Guzzle

Connessione a CouchDB con PHP e Guzzle

Abbiamo visto come connetterci a CouchDB in diversi linguaggi; in tutti i casi abbiamo usato una qualche libreria esterna ad-hoc.

Ma CouchDB, in verità, disponde di una API REST internamente; è quindi possibile eseguire operazioni sul db con delle semplici richieste HTTP e il JSON come formato.

L'esperimento di oggi consiste nel fare queste operazioni con PHP usando Guzzle, che è un client HTTP; senza quindi usare librerie ad-hoc.

Mattepuffo's logo
Aggiungere giorni ad un data in C#

Aggiungere giorni ad un data in C#

Oggi vediamo come aggiungere dei giorni ad una data in C#.

Il tutto richiede veramente poche righe di codice.

I giorni li aggiungeremo a partire dalla data odierna, ed useremo l'oggetto DateTime.

Mattepuffo's logo
Aggiungere giorni ad un data in Java

Aggiungere giorni ad un data in Java

La gestione delle date in Java la trovo un pò prolissa; ma è comunque eseguire tutte le operazioni che vogliamo.

Ad esempio ho la necessità di aggiungere 10 giorni ad una data.

Usando DateFormat e LocalDateTime è abbastanza facile.

Mattepuffo's logo
Convertire un array in stringa in PHP

Convertire un array in stringa in PHP

In PHP si fa molto uso di array; può succedere che a volte abbiamo bisogno di trasformare un array in un'unica stringa.

E' possibile farlo in tre modi (o almeno io conosco questi tre):

  • usando la funzione implode
  • usando la funzione json_encode
  • costruendo la stringa ciclando sull'array

Mattepuffo's logo
Apache, CORS e i fonts

Apache, CORS e i fonts

Non so per quale motivo, ma un sito su un provider che penso faccia abbastanza schifo (non scelto da me) ad un certo punto mi ha iniziato a dare problemi con i fonts.

In sostanza usciva il solito errore sui fonts bloccati perchè proveniente da una origine non riconosciuta.

Il classico problema CORS insomma.


Warning: getimagesize(https://www.mattepuffo.com/blog/../IMMAGINI_ARTICOLI/.png): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /web/htdocs/www.mattepuffo.com/home/blog/last.php on line 20
Mattepuffo's logo
Delete con join in SQL Server

Delete con join in SQL Server

Le JOIN vengono usate per estrarre records tra tabelle collegate.

Ma si possono usare con l'istruzione DELETE per cancellare determinati records da una tabella selezionandoli in base a determinati valori da una tabella collegata.

Oggi vediamo come fare in SQL Server.

Mattepuffo's logo
Invio richieste HTTP in Rust con reqwest

Invio richieste HTTP in Rust con reqwest

Per l'invio di richieste HTTP in Rust abbiamo a disposizione la libreria reqwest, praticamente quasi uno standard al momento.

Per usarla aggiungete queste dipendenze al Cargo.toml:

[dependencies]
reqwest = { version = "0.10", features = ["json"] }
tokio = { version = "0.2", features = ["full"] }

Mattepuffo's logo
Visualizzare gli errori in Android Volley

Visualizzare gli errori in Android Volley

Volley è una delle più usate librerie Java per le operazioni di rete in Android.

L'unico difetto è che non è proprio immediato leggere eventuali errori.

Qui sotto un esempio di codice Java in cui andiamo a fare l'override di due metodi:

  • parseNetworkError
  • deliverError

Mattepuffo's logo
Connessione a SQLite in Rust

Connessione a SQLite in Rust

Anche con Rust è possibile usare il db SQLite, ed è anche abbastanza facile.

Prima di tutto aggiungete questa dipendenza al Cargo.toml:

[dependencies.rusqlite]
version = "0.21.0"
features = ["bundled"]

Mattepuffo's logo
Connessione FTP in Rust

Connessione FTP in Rust

Per la connessione ad un server FTP in Rust abbiamo varie scelte; ma la libreria che vedremo oggi è di sicuro la più usata: rust-ftp!

Può supportare anche FTPS, ma a me ha dato problemi, quindi non l'ho ancora testata.

Aggiungete questa dipendenza al Cargo.toml:

[dependencies]
ftp = { version = "3.0.1" }

Mattepuffo's logo
Creare tabelle responsive in HTML con No More Tables

Creare tabelle responsive in HTML con No More Tables

Precisiamo subito che No More Tables non è un plugin / libreria, ma possiamo definirla una tecnica per rendere le tabella HTML responsive.

Questa tecnica è stata inventata da Chris Coyier, ed oggi ne vediamo un esempio.

In sostanza si tratta di una serie di regole CSS con l'aiuto di un attributo da dare alle celle delle righe.

Mattepuffo's logo
Hashing delle password in Java con Argon2

Hashing delle password in Java con Argon2

Argon2 è un algoritmo di password hashing, tra l'altro vincitore del Password Hasing Competion nel 2015.

Oggi vediamo come usarlo in Java attraverso una libreria apposita.

L'algoritmo ha tre varianti:

  • Argon2d usato principalmente per la Cryptocurrency
  • Argon2i usato principalmente per il password hashing
  • Argon2id un ibrido, da usare quando non siete sicuri

Mattepuffo's logo
Factory Method in Python

Factory Method in Python

Il Factory Method, nella programmazione a oggetti, ci permette di creare oggetti senza specificare la classe.

Attraverso una interfeccia viene creato un oggetto, lasciando alle sottoclassi la decisione di quale oggetto istanziare.

Oggi ne vediamo un esempio in Python; per semplicità ho messo tutto nello stesso file.

Mattepuffo's logo
Ricerca binaria in Kotlin

Ricerca binaria in Kotlin

La ricerca binaria è un algoritmo che viene usato per trovare gli elementi in un array ordinato; il fatto che sia ordinato è fondamentale e obbligatorio.

Questo algoritmo è più efficiente della ricerca sequenziale, in quanto usa la logica del divide et impera.

In sostanza si procede suddividendo l'array man mano che la ricerca non trova l'elemento, andando a ricercarlo solo in una parte dell'array, che diventa sempre più piccolo.

Mattepuffo's logo
Creare e scaricare file CSV in PHP

Creare e scaricare file CSV in PHP

Oggi vi presento una piccola funzioncina che ci permette di creare un file CSV al volo e metterlo in download usando PHP.

Non useremo librerie di terze parti, ma le funzioni standard:

  • fopen
  • fputcsv
  • fseek
  • fpassthru

Mattepuffo's logo
Informazioni si sistema in Rust con sysinfo

Informazioni si sistema in Rust con sysinfo

Abbiamo già visto come ottenere informazioni di sistema in Rust; oggi replichiamo l'argomento con il modulo sysinfo.

Per installarlo nel vostro progetto aggiungete questa dipendenza al Cargo.toml:

[dependencies]
sysinfo = "0.14.7"

Mattepuffo's logo
Usare gli array associativi in BASH

Usare gli array associativi in BASH

BASH nasconde molto di più di quello che si pensa.

Ad esempio io non sapevo supportasse gli array associativi, cosa che invece uso molto in altri linguaggi.

Oggi vediamo un esempio basico.

Mattepuffo's logo
Gestione del tempo in Java con LocalTime

Gestione del tempo in Java con LocalTime

LocalTime è un oggetto che rappresenta il tempo in Java.

Oggi lo usiamo per verificare che un orario sia tra due orari.

Con il metodo parse, prendiamo il tempo da una stringa; nel caso specifico, il tempo mi arrivava proprio in formato stringa da un database.

Mattepuffo's logo
Ricerca binaria in C++

Ricerca binaria in C++

La ricerca binaria è un algoritmo che viene usato per trovare gli elementi in un array ordinato; il fatto che sia ordinato è fondamentale e obbligatorio.

Questo algoritmo è più efficiente della ricerca sequenziale, in quanto usa la logica del divide et impera.

In sostanza si procede suddividendo l'array man mano che la ricerca non trova l'elemento, andando a ricercarlo solo in una parte dell'array, che diventa sempre più piccolo.

Mattepuffo's logo
Valore di default in PrimeReact Calendar

Valore di default in PrimeReact Calendar

Sto usando PrimeReact per un bel progetto, e mi trovo molto bene.

In una pagina ho un oggetto Calendar; il bisogno è quello di impostare una data di default.

Per farlo bisogna impostare un oggetto Date:

  • vuoto nel caso che la data da impostare sia quella odierna
  • oppure valorizzata con quello che volete voi

Mattepuffo's logo
Usare la funzione filter in Python

Usare la funzione filter in Python

La funzione filter in Python ci permette di filtrare una lista, restituendone un'altra.

Il tutto attraverso una funzione di callback; questo fa si che non dobbiamo iterare su tutti gli elementi di una lista.

Se ne occuperà filter.