Ultimi 100 articoli

Mattepuffo's logo
Upload dei files in Laravel

Upload dei files in Laravel

Una cosa che mi è piaciuta molto in Laravel è l'API per lo storage.

Facile da usare e senza fronzoli.

Oggi vediamo come fare l'upload dei files; tenete presente che sto usando Laravel come Web API per Angular, e non come un stio web "standard".

Mattepuffo's logo
Creare un widget in Wordpress

Creare un widget in Wordpress

Tendenzialmente i template che installiamo in Wodpress hanno già parecchi widget.

A me è servito crearne qualcuno personalizzato, ed oggi vediamo come fare.

Premetto che dobbiamo modificare il functions.php, quindi conviene che usiate una tema child.

Mattepuffo's logo
Vault: vulnerability scanner scritto in Python

Vault: vulnerability scanner scritto in Python

Su GitHub Vault viene descritto come "Il contellino svizzero per gli hacker".

Alla fine della fiera è un vulnerability scanner che può essere usato anche per controllare i nostri siti / server.

E' scritto in Python, e quindi sulla carta installabile su tutti gli OS; io l'ho testato in Debian 10.

Mattepuffo's logo
Impostare una scadenza in localStorage

Impostare una scadenza in localStorage

L'oggetto localStorage di Javascript è veramente ottimo, flessibile e funzionale.

Solo che di default non ha una scadenza; in tal caso dovreste usare sessionStorage, che però scade alla chiusura della sessione.

Quello che vogliamo ottenere è un localStorage che scade quando vogliamo noi.

Mattepuffo's logo
Visualizzare il numero di prodotti in WooCommerce API

Visualizzare il numero di prodotti in WooCommerce API

Le API di WooCommerce sono parecchio complete; anche se su certe cose la documentazione non è sempre completa.

Ci ho messo un pò ad esempio a trovare come visualizzare il numero di prodotti presenti.

Questo perchè bisogno andare a ricercarlo sui reports.

Mattepuffo's logo
Usare classi custom in Laravel

Usare classi custom in Laravel

Ho una classe di utilità PHP che uso e mantengo da anni.

E per questo volevo usarla in un progetto con Laravel.

La cosa è stata abbastanza semplice; prima di tutto ho creato una cartella Helpers dentro app/Http.

Mattepuffo's logo
Messaggio non autorizzato custom in Laravel

Messaggio non autorizzato custom in Laravel

Laravel nasce per la creazione di applicazioni web "standard", e quindi nel caso di utente non autorizzato, ti rimanda ad una pagina che in genere è quella di login.

Questo, però, non è un comportamento che funziona bene nel caso in cui si stia creando una API e si viene autenticati con token.

Nel caso di token mancante / scaduto, bisogna rispondere con un JSON.

Mattepuffo's logo
Rimuovere public dagli url in Laravel e Apache

Rimuovere public dagli url in Laravel e Apache

Laravel, come penso anche altri framework del genere, utilizza una cartella public dove inserire tutti i files del sito.

Questo perchè parte dal presupposto che poi si imposti la webroot del server puntandola a public.

Ma non tiene conto di due cose:

  • non è detto che possiamo fare questa modifica (vedasi hosting condivisi)
  • non è detto che vogliamo farlo

Mattepuffo's logo
Validare email in Rust

Validare email in Rust

Oggi vediamo come usare le espressioni regolare per validare una email in Rust.

Al contrario di altri linguaggi, dobbiamo installare una dipendenza per usare le regex in Rust.

Mattepuffo's logo
Creare Eventbus in Java e Guava

Creare Eventbus in Java e Guava

Un Eventbus è un meccanismo attraverso il quale diversi componenti comunicano tra di loro senza avere informazioni l'uni sugli altri.

Oggi vediamo un esempio basico su come creare questi eventi in Java usando Guava; se usate Maven:

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.1-jre</version>
        </dependency>

Mattepuffo's logo
IDE ed editor di sviluppo - 2021

IDE ed editor di sviluppo - 2021

Nel 2018 avevo fatto un articolo (che trovate qui se volete vedere le differenze) in cui parlavo degli IDE / editor di testo che uso per programmare; o comunque che uso per il mio lavoro in generale.

Dopo due anni direi che è il caso di aggiornare la lista.

Anche qui vi faccio un elenco specificando per quali attività e su quale sistema, e se possibile indicando anche un perchè.

Mattepuffo's logo
Guida avanzata sulla console Javascript

Guida avanzata sulla console Javascript

La console di Javascript la conosciamo tutti, e tutti in genere usiamo queste 4 funzioni:

  • console.log()
  • console.error()
  • console.debug()
  • console.info()
  • console.warn()

Anzi, ad essere sincero io uso solo la prima!

Mattepuffo's logo
Validare email in Kotlin

Validare email in Kotlin

Oggi vediamo come usare le espressioni regolari in Kotlin per validare una email.

Ovviamente andremo a controllare il formato della email, non se esiste.

Per questa operazione si devono fare altri controlli che esulano dall'articolo.

Mattepuffo's logo
Connessione a MongoDB in Dart

Connessione a MongoDB in Dart

Ho un pò abbandonato Dart per vari motivi; ma visto che lo sviluppo ha accelerato e che sono state introdotte diverse novità, ho deciso di rispolverarlo.

Oggi vediamo come connetterci ad un database MongoDB.

Mattepuffo's logo
Parsing HTML remoto in Angular con HttpClient

Parsing HTML remoto in Angular con HttpClient

Ho diversi script PHP che richiamo tramite AJAX che mandano in output HTML invece che JSON.

Questi script me li vorrei riportare così come sono in un'applicazione scritta in Angular.

Quindi devo fare una chiamata a questi script tramite il modulo HttpClient, e poi visualizzarli nella pagina.

Mattepuffo's logo
Aggiungere i META tags in Angular

Aggiungere i META tags in Angular

I META tags possono essere molto importanti sotto diversi punti di vista.

In Angular, avendo una sola pagina HTML, non possiamo aggiungerli li di default.

Ma possiamo aggiungerli / cancellarli / modificarli con il modulo integrato Meta.

Mattepuffo's logo
Manipolare video con FFMpeg e C#

Manipolare video con FFMpeg e C#

FFMpeg lo conosciamo bene; non conoscevo invece FFMpegCore, una librerie per .NET che ci permette di usare FFMpeg nei nostri programmi.

Quindi la prima cosa da fare è installare FFMpeg:

  • metodo 1 -> scaricare i binari da qui
  • usare il terminale

In questo secondo caso:

Mattepuffo's logo
Introduzione alle Notifications in Javascript

Introduzione alle Notifications in Javascript

Oggi vediamo uno snippet di codice per capire le basi delle Notifications Javascript.

Premetto il comportamento è diverso tra i vvari browsers.

Ad esempio in Chrome compare un messaggio che ci chiede se vogliamo accettarl; in Firefox no, compare solo una icona di chat vicino alla barra degli url.

Mattepuffo's logo
Validare email in Python

Validare email in Python

Oggi vediamo come validare una casella email usando Python.

Lo faremo usando le espressioni regolare e il modulo re; lo specifico perchè ho visto che ci sono anche delle librerie specifiche per Python per fare questo (che magari vedremo prima o poi).

Mattepuffo's logo
Rimuovere l'hash dall'url in Angular

Rimuovere l'hash dall'url in Angular

In Angular (al momento uso la versione 11) di default il path ha il simbolo hash (#) che però non mi piace.

Levarlo non è difficile, e adesso vediamo come fare.

L'unica nota è che ancora non so cosa comporti averlo o meno; in ambiente locale funziona tutto.

Mattepuffo's logo
Eseguire il logout di tutti gli utenti in Linux

Eseguire il logout di tutti gli utenti in Linux

Piccol snippet per eseguire il logout di tutti gli utenti in Linux.

Per farlo possiamo usare il comando pkill, che è un comando di base di Linux.

Solo che pare che non sia sempre localizzato in percorsi inclusoi nel PATH di sistema.

Mattepuffo's logo
Validare email in VB.NET

Validare email in VB.NET

Oggi vediamo come validare una email in VB.NET.

Per farlo useremo System.ComponentModel.DataAnnotations, che dovete installare tramite NuGet.

Mattepuffo's logo
Convertire List in Map in Kotlin

Convertire List in Map in Kotlin

Oggi vediamo come convertire una List in Map in Kotlin.

Vedremo tre metodi, usando tre funzioni diverse:

  • associate
  • associateBy
  • map

Le differenze maggiori stanno nella sintassi, ma il risultato è lo stesso.

Mattepuffo's logo
Utilizzare i Fragmens in Android e Java

Utilizzare i Fragmens in Android e Java

I Fragments in Android possono essere molto utili in diverse occasioni.

In pratica rappresentano porzioni riutilizzabili di codice; ogni Fragment ha il proprio layout e il proprio ciclo di vita.

Oggi vediamo un esempio del loro utilizzo in Java.

Mattepuffo's logo
Validare email in C#

Validare email in C#

Oggi vediamo come validare una email in C#.

Per farlo useremo System.ComponentModel.DataAnnotations, che dovete installare tramite NuGet.

Mattepuffo's logo
Validare email in Java

Validare email in Java

Oggi vediamo come usare le espressioni regolari in Java per validare una email.

Ovviamente andremo a controllare il formato della email, non se esiste.

Per questa operazione si devono fare altri controlli che esulano dall'articolo.

Mattepuffo's logo
Disabilitare un form con Javascript

Disabilitare un form con Javascript

Oggi vi propongo una semplice funzione che disabilita tutti i campi di un form in Javascript.

Passandogli il form come parametro, la funzione scorre tutti i campi e li disabilita.

Non sono richieste librerie esterne.

Mattepuffo's logo
Criptare e decriptare file in VB.NET

Criptare e decriptare file in VB.NET

Oggi vediamo come criptare e decriptare file usando VB.NET.

Come algoritmo useremo Aes.

La chiave di cifratura sarà, ovviamente, la stessa.

Useremo la crittografia simmetrica, e non installeremo librerie esterne.

Mattepuffo's logo
Criptare e decriptare file in C#

Criptare e decriptare file in C#

Oggi vediamo come criptare e decriptare file usando C#.

Come algoritmo useremo Aes.

La chiave di cifratura sarà, ovviamente, la stessa.

Useremo la crittografia simmetrica, e non installeremo librerie esterne.

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.