Ultimi 100 articoli

Mattepuffo's logo
Monitorare la JVM con VisualVM

Monitorare la JVM con VisualVM

VisualVM è un programma multipiattaforma che ci consente di monitorare le attiività della JVM.

Mi è stato utile in svariati casi.

Una volta che avete scompattato l'archivio, avviate l'esebile relativo al vostro sistema.

Mattepuffo's logo
Introduzione a warp, web framework per Rust

Introduzione a warp, web framework per Rust

warp è uno dei vari web framework a disposizione per Rust.

Sicuramente è uno dei più usati, o almeno è quello che ho capito girovagando per il web.

In questo articolo vediamo come usarlo, giusto per introduzione.

In sostanza creeremo una route che manda in output i dati in JSON.

Mattepuffo's logo
Creare PDF in Go con Maroto

Creare PDF in Go con Maroto

Maroto è una delle librerie per Go per la creazione di PDF.

Supporta parecchie opzioni, ed è anche in grado di generare barcode.

Per l'esempio di codice sono partito da quello del sito, andandolo poi a modificare.

Mattepuffo's logo
Clausola where tra parentesi in Eloquent

Clausola where tra parentesi in Eloquent

Diciamo che dal titolo forse non si capisce bene cosa intendo o cosa mi serva.

Soprattutto perchè da quando uso Eloquent è la prima volta che ho questa necessità, quindi non mi ero mai posto il problema.

Mattepuffo's logo
Caching in Node.js con Bentocache

Caching in Node.js con Bentocache

Bentocache è una libreria per Node.js che ci permette di salvare i dati in formato key:value e riutilizzarli nella nostra applicazione.

Mette a disposizione diversi drivers per il salvataggio dei dati.

Noi vediamo un esempio basico con il salvataggio in memory.

Mattepuffo's logo
Usare gli indexer in VB.NET

Usare gli indexer in VB.NET

In VB.NET gli indexer ci permettono di aggiungere un index ad una classe o ad una struct in modo da indicizzarla come un array.

Visto che è più facile vedere il codice che spiegarlo a parole, vediamo un esempio.

Mattepuffo's logo
Intercettare gli errori in BASH

Intercettare gli errori in BASH

BASH non ha un concetto di try/catch come molti linguaggi di programmazione, ma possiamo comunque intercettare gli errori in diverse maniere.

Supponiamo di avere uno script per creare una cartella nella root del sistema e di lanciarlo senza i permessi adeguati.

Ovviamente darà un errore.

Mattepuffo's logo
Usare gli indexer in C#

Usare gli indexer in C#

In C# gli indexer ci permettono di aggiungere un index ad una classe o ad una struct in modo da indicizzarla come un array.

Visto che è più facile vedere il codice che spiegarlo a parole, vediamo un esempio.

Mattepuffo's logo
Creare model da database con Reliese

Creare model da database con Reliese

Putroppo Laravel da per scontato che usiamo il code-first per il nostro db, ma non è sempre così.

Per fortuna c'è Reliese, un package che ci consente di creare i nostri model partendo dal database.

Al momento l'ho testato solo con Laravel, ma non è detto che non si possa usare anche al di fuori.

Mattepuffo's logo
Scaricare file zip in Laravel

Scaricare file zip in Laravel

In questo articolo vedremo come creare un file zip e far direttamente il download in Laravel.

Solo che, in questo caso specifico, i file li prenderemo eseguendo una query su db.

Dalla tabella prenderemo i vari nomi dei files, che stanno tutti dentro la stessa cartella, e se esistono li aggiungeremo al file zip.

Mattepuffo's logo
Minificare file Javascript con UglifyJS

Minificare file Javascript con UglifyJS

UglifyJS è un piccolo programma per Node.js, che può essere usato anche come libreria se ho capito bene, che ci permette di minificare i file Javascript.

In sostanza vuol dire comprimere i file Javascript molto grandi in modo da renderli più leggeri, ma meno leggibili.

Ovviamente avete bisogno di Node.js ed npm.

Mattepuffo's logo
Leggere file di config senza commenti in Linux

Leggere file di config senza commenti in Linux

In verità questo articolo dovrebbe valere non solo per Linux, anche per macOS e BSD, in quanto useremo grep e sed per ottenere quello che vogliamo: visualizzare nel terminale i file di config senza commenti!

Useremo un file di test in modo da poterlo eventualmente manipolare.

Mattepuffo's logo
Eseguire backup in Laravel con laravel-backup

Eseguire backup in Laravel con laravel-backup

Come si intuisce dal nome laravel-backup è una libreria per Laravel che ci consente di effettuare i backup in maniera agevole.

Di default esegue il back sia dei files che del database, ma ovviamente possiamo anche farli separati.

Inoltre è anche possibile farli su spazi esterni tramite FTP o simili.

Mattepuffo's logo
Verificare che stiamo usando Systemd

Verificare che stiamo usando Systemd

Non tutti amano Systemd, ma è comunque diventato lo standard nella maggior parte delle distro Linux.

In questo articolo vediamo alcuni metodi per verificare che stiamo usando Systemd piuttosto che un altro sistema.

Mattepuffo's logo
Scambiare dati tra componenti in Angular 18

Scambiare dati tra componenti in Angular 18

Nelle varie nuove versioni Angular ci sta mettendo a disposizione sempre più strumenti che facilitano diverse operazioni.

In questo articolo vediamo come usare @Input per scambiare dati tra due componenti nella versione 18.

Mattepuffo's logo
Caching in Node.js con unstorage

Caching in Node.js con unstorage

unstorage è una libreria per Node.js che ci permette di salvare i dati in formato key:value e riutilizzarli  nella nostra applicazione.

Mette a disposizione diversi drivers per il salvataggio dei dati.

Noi vediamo un esempio basico con il salvataggio in memory.

Mattepuffo's logo
Attivare le API in Laravel 11

Attivare le API in Laravel 11

In Laravel 11 è stato eliminato il file routes/api.php, che per me è fondamentale, in quanto uso Laravel principalmente per la creazione di web api.

Non so quale sia la motivazione, ma per fortuna riattivare le stateless API è abbastanza facile.

Mattepuffo's logo
Caching in Nodejs con Keyv

Caching in Nodejs con Keyv

Keyv è uno storage di tipo key:value che supporta diversi database.

Di default salva tutto in memoria, ma volendo, come abbiamo detto, possiamo usare:

  • MongoDB
  • Redis
  • SQLite
  • MySQL
  • Postgre
  • Memcache
  • Etcd

No vediamo un esempio con SQLite.

Mattepuffo's logo
Usare HTTPS in locale con Angular

Usare HTTPS in locale con Angular

Angular viene avviato in genere su http://localhost:4200.

Ogni tanto il discorso di stare in HTTP mi ha dato problemi.

Volendo è possibile usare HTTPS con un certificato self-signed.

In questo articolo vediamo come fare.

Mattepuffo's logo
Input pin in Flutter

Input pin in Flutter

pininput è un package per Flutter che ci consente di creare, appunto, delle caselle per inserire un PIN.

Da quello che ho capito è anche possibile agganciarlo a servizi esterni come SMS o database remoti.

Non ho testato queste funzioni ovviamente, mi sono limitato ad un esempio basico per vederne il funzionamento.

Mattepuffo's logo
Usare gli Stream in Dart

Usare gli Stream in Dart

Uno stream in Dart è sostanzialmente una sequenza di eventi che rappresentano dei valori che arriveranno in maniera asincrona.

Che detto così vuol dire poco o nulla in realtà....

Quindi in questo articolo vediamo qualche esempio in modo da capire.

Mattepuffo's logo
Rimuovere servizi da Systemd in Linux

Rimuovere servizi da Systemd in Linux

Systemd è diventato praticamente lo standard per la gestione dei servizi in Linux.

In questo articolo vediamo come rimuovere un servizio dalla "lista".

Ovviamente controllate bene che non serva più!

Mattepuffo's logo
Connessione ad AuraDB e Neo4j in Go

Connessione ad AuraDB e Neo4j in Go

AuraDB è un fully manage cloud service per Neo4j.

Volendo studiarmi un pò Neo4j, ed essendoci un piano gratuito, ho deciso di usare AuraDB.

Ma il codice dovrebbe funzionare anche nel caso di una istanza locale, in quanto la libreria è quella standard.

Mattepuffo's logo
Usare i templates in Go

Usare i templates in Go

Go ha già il suo package per i templates dentro text/template.

Anche se ci stanno svariati altri package, da quello che ho capito questo standard è già abbastanza veloce e utilizzato.

In questo articolo vediamo come usarlo.

Mattepuffo's logo
Usare i template in C++

Usare i template in C++

In C++ i templates ci permettono, sostanzialmente, di usare i generics.

Quindi possiamo creare delle funzioni con tipi generici, e poi usarle a nostro piacimento.

In questo articolo ne vediamo un paio di esempi.

Mattepuffo's logo
Usare le funzioni lambda in C++

Usare le funzioni lambda in C++

Le funzioni lambda sono usate in tantissimi linguaggi, orami vanno di moda.

Anche in C++ possiamo usarle (ma attenzione che non so da quale versione).

In questo articolo vediamo qualche esempio.

Mattepuffo's logo
Modificare il rate limit in Laravel

Modificare il rate limit in Laravel

In Laravel il rate limit è impostato di default a 60.

Diciamo che nella maggior parte dei casi può andar bene, ma in altro sarebbe meglio aumentarlo.

Possiamo farlo semplicemente agendo sul file app/Providers/RouteServiceProvider.

Mattepuffo's logo
Inviare form con Alpine.js

Inviare form con Alpine.js

In questo articolo vediamo come inviare un form in Alpine.js.

Invieremo i dati in POST.

A livello grafico il form usa Bootstrap, ma ovviamente non è obbligatorio.

Mattepuffo's logo
ReorderableListView in Flutter

ReorderableListView in Flutter

In questo articolo vediamo come usare il widget ReorderableListView, che in sostanza è una ListView che può essere ordinata con il drag-and-drop.

Non ci sono widget esterni da installare, e sostanzialmente l'uso è molto simile a quello di una ListView "classica".

Solo che metteremo una icona che ci permette di trascinare le varie righe.

Mattepuffo's logo
Download file da FTP con Laravel

Download file da FTP con Laravel

In pratica da Laravel devo connettermi ad un FTP, listare i files nella cartella, e scaricarli in una directory sul server.

Prima di tutto dobbiamo installare una libreria apposita.

Mattepuffo's logo
Rimuovere l'hash dagli url in Flutter

Rimuovere l'hash dagli url in Flutter

In Flutter, come in molti altri framework orientati al web, abbiamo due url strategy:

  • hash strategy, che in genere è quello di default e che prevede un hash (#) negli url
  • path strategy

In questo articolo vediamo come impostare il path strategy usando un package apposito: url_strategy!

Mattepuffo's logo
Usare i Google Fonts in Flutter

Usare i Google Fonts in Flutter

Attraverso il package google_fonts possiamo usare i Google Fonts nelle nostre Flutter app.

Possiamo sia decidere di fare il fetching dalla rete, che salvare i fonts nella app.

Ovviamente ci sono i soliti pro e contro.

Io non li salverò, ma nella documentazione è spiegato come fare.

Mattepuffo's logo
Convertire un form in JSON con Javascript

Convertire un form in JSON con Javascript

In questo articolo vi propongo due metodi per serializzare un form usando Javascript.

Quello che otterremo sarà un JSON con le chiavi che corrispondono al name del campo, e il value che corrisponde al valore.

Mattepuffo's logo
Ruotare widget in Flutter

Ruotare widget in Flutter

In questo articolo vi presento due modi per ruotare un widget in Flutter:

  • RotatedBox
  • Transform.rotate

Il secondo metodo è un pò più flessibile secondo me.

Mattepuffo's logo
Spoiler widget in Flutter

Spoiler widget in Flutter

spoiler_widget è un widget per Flutter che ci consente di nascondere un testo, o altro, e visualizzarlo al tap/click.

Prendendo spunto dall'esempio più sotto, giocate con i parametri per capire come nascondere quello che vi serve.

Mattepuffo's logo
Parsing YAML in Dart

Parsing YAML in Dart

In questo articolo vediamo come fare il parsing di un file YAML in Dart.

Per semplificarci ulteriormente la vita lo convertiremo in JSON.

Mattepuffo's logo
Settare la timezone in Go

Settare la timezone in Go

In Go possiamo settare/forzare la timezone molto facilmente.

In questo articolo vediamo un esempio, in cui stamperemo prima l'orario locale e poi l'orario della nuova timezone.

Non sono richieste librerie esterne.

Mattepuffo's logo
Impostare CORS in Gin

Impostare CORS in Gin

Per impostazione predefinita Gin Gonic blocca le chiamate da server esterni.

E' comunque possibile impostare CORS attraverso una libreria apposita.

In questo articolo vediamo come fare.

Mattepuffo's logo
Convertire files in PHP con Pandoc

Convertire files in PHP con Pandoc

Pandoc è una famosa utility da riga di comando che ci consente di convertire una pletora di formati.

Esiste un wrapper per PHP che andremo a studiare in questo articolo.

La cosa principale è che sulla macchina dove girerà il vstro script sia installato anche Pandoc; potete vedere la documentazione ufficiale per l'installazione.

Mattepuffo's logo
Ottimizzare le immagini in Python con YOGA

Ottimizzare le immagini in Python con YOGA

YOGA è una utility da riga di comando, scritta in Python, per l'ottimizzazione delle immagini.

E' facile da usare, in quanto non ha tantissime opzioni, se non le essenziali.

E' anche possibile usarla come libreria all'interno dei nostri script, cosa che faremo.

Infine, esiste anche già una GUI ufficiale se vi interessa.

Mattepuffo's logo
Usare il pattern Strategy in C#

Usare il pattern Strategy in C#

Il pattern Strategy fa parte dei behavioral design pattern, e permette di definire una famiglia di "algoritmi" e renderli facilmente interscambiabili.

In sostanza possiamo richiamare un algoritmo, farci delle operazioni, e poi cambiarlo a runtime.

Nel nostro esempio avremo un metodo per la somma e uno per la sottrazione.

Nell'esempio non ho considerato eventuali gestione degli errori (ad esempio la sottrazione non può essere negativa, ecc).

Mattepuffo's logo
Creare una web api in Dart con shelf

Creare una web api in Dart con shelf

Chi ha detto che Dart è valido solo se usato con Flutter?

In realtà è un linguaggio che può essere usato per un sacco di cose, anche lato desktop o server.

In questo articolo vediamo come usare shelf per creare una web api.

Mattepuffo's logo
Creare app con GUI in Go e Fyne

Creare app con GUI in Go e Fyne

Fyne è un GUI toolikit multi piattaform per Go.

In questo articolo vediamo come usarlo per creare la nostra prima finestra.

Ci sono alcuni passaggi da fare, e la prima compilazione può durare anche 10 minuti.