Ultimi 100 articoli

Mattepuffo's logo
Intercettare il drag and drop in Javascript

Intercettare il drag and drop in Javascript

Con l'avvento di HTML 5, e con il miglioramento di Javascript stesso, è stato possibile fare molte cose senza l'uso di librerie esterne.

Una di queste è il drag and drop!

In questo articolo vediamo come impostarlo e come intercettare i vari eventi.

Mattepuffo's logo
Usare le ListView in Flutter

Usare le ListView in Flutter

La ListView è un componente di Flutter che ci permette di creare un layout a lista in maniera molto semplice.

In questo articolo vediamo come usarlo; non prenderemo i dati da una sorgente remote, ma avremo una lista creata a mano nel codice.

Cominciamo con il model del nostro oggetto (book.dart).

Mattepuffo's logo
Usare le FunctionalInterface in Java

Usare le FunctionalInterface in Java

Le FunctionalInterface sono state inseriete già in Java 8, ma non vengono usate molto spesso nei progetti, ma il JDK ne fa largo uso.

In questo articolo vediamo un esempio base su come usarle.

Dovete tenere presente una una interfaccia marcata come FunctionalInterface può avere un solo metodo astratto.

Mattepuffo's logo
Usare le shape-outside nei CSS

Usare le shape-outside nei CSS

La proprietà CSS shape-outside ci permette di controllare come i contenuti vengo visualizzati attorno ad un elemento floated.

In pratica possiamo usarlo anche vicino alle immagini per visualizzarci vicino un testo.

Una cosa che prima richiedeva un pò di lavoro, adesso può essere fatto in poche righe.

Mattepuffo's logo
Usare le GridView in Flutter

Usare le GridView in Flutter

Il GridView è un componente di Flutter che ci permette di creare un layout a griglia in maniera molto semplice.

In questo articolo vediamo come usarlo; non prenderemo i dati da una sorgente remote, ma avremo una lista creata a mano nel codice.

Cominciamo con il model del nostro oggetto (book.dart).

Mattepuffo's logo
Richiamare funzioni C in Rust

Richiamare funzioni C in Rust

Anche se Rust sta prendendo molto piede, e addirittura si parla di includerlo nel kernel Linux, C rimane ancora il linguaggio predominante nell'ambito della programmazione di sistema (e non solo).

In questo articolo vediamo un esempio basico di come richiamare una funzione C direttamente da Rust.

Dico basico perchè parliamo di funzioni semplici, che ad esempio non richiedono puntatori.

Mattepuffo's logo
Usare custom fonts in Flutter

Usare custom fonts in Flutter

In questo articolo vediamo come usare dei font custom in Flutter.

Ovviamente dovete caricarli nel progetto, e sono supportati i seguenti formati (almeno ad oggi):

  • ttf
  • otf
  • ttc

Io ho creato un cartella assets nella root del progetto, ed all'interno una cartella fonts dove mettere i vari files.

Mattepuffo's logo
Listare file in maniera ricorsiva in Node.js

Listare file in maniera ricorsiva in Node.js

In questo articolo vediamo due modi per listare i files in maniera ricorsiva partendo da una directory in Node.js e Javascript.

Vedremo prima un metodo sincrono, e poi quello asincrono.

Non ci sono dipendenze da installare, in quanto useremo i due modul fs e path.

In entrambi i casi useremo un metodo ricorsivo.

Mattepuffo's logo
Usare il pattern Builder in Dart

Usare il pattern Builder in Dart

Il pattern Builder è uno dei pattern "fondamentali", utilizzato in alternativa all'utilizzo dei costruttori in overloading.

L'obiettivo è quello di rimpiazzare costruttori poco leggibili e poco flessibili, con classi che siano pronte a creare oggetti più complessi.

In questo articolo ne vediamo un esempio in Dart.

Mattepuffo's logo
Connessione ad AuraDB e Neo4j in Python

Connessione ad AuraDB e Neo4j in Python

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.

L'unica differenza sarà l'url.

Mattepuffo's logo
Bloccare la rotazione in Flutter

Bloccare la rotazione in Flutter

In Flutter è molto facile bloccare la rotazione della app, e ci permette anche di indicare se vogliamo un portrait up/down, e landscape right/left.

Il tutto sta in poche righe di codice prima del lancio della app.

Mattepuffo's logo
Ordinare una lista in Dart

Ordinare una lista in Dart

Quello che vogliamo fare è scorrere in maniera ricorsiva una directory, prendere tutti i files e ordinarli per nome.

Scorrere la lista e stampare solo i nomi dei file!

Per fare tutto questo in Dart non abbiamo bisogno di installare dipendenze esterne.

Mattepuffo's logo
Usare ZeroMQ in Node.js

Usare ZeroMQ in Node.js

ZeroMQ è una libreria per lo scambio di messaggi tra un client ed un server di tipo brokerless!

Sostanzialmente vuol dire che nella libreria è già incluso tutto quello che ci serve, senza altre configurazioni.

In questo articolo vediamo un esempio di utilizzo in Node.js.

Mattepuffo's logo
Creare un video da immagini con FFmpeg

Creare un video da immagini con FFmpeg

In questo articolo vi mostro una serie di opzioni da dare in pasto a FFmpeg per creare un video da una serie di immagini.

Ho impostato un framerate basso per rallentare un pò il video, ma dipende anche da quante foto avete.

Mattepuffo's logo
Installare VSCode in Debian 11

Installare VSCode in Debian 11

VSCode è un editor molto avanzato, più un IDE quasi in realtà, con il quale personalmente non mi trovo benissimo.

Lo uso principalmente per piccoli progetti o veloci modifiche.

Oggi mi è capitato di doverlo installare su Debian 11.

Per farlo ho aggiunto un repo apposito.

Mattepuffo's logo
Connessione a InfluxDB con Ruby

Connessione a InfluxDB con Ruby

Come sapete Ruby non mi fa impazzire, ma ho deciso comunque di continuare un pò a tenerlo vivo e testarlo su alcune cose.

In questo articolo vediamo come usarlo per connetterci a InfluxDB.

Non andremmo molto in "profondità", anche perchè ho fatto giusto un test veloce.

Mattepuffo's logo
Javascript flat e flatMap

Javascript flat e flatMap

I metodi flat e flatMap in Javascript ci aiutano ad eseguire alcune operazioni sugli array.

In questo articolo vediamo qualche esempio di entrambi.

Mattepuffo's logo
Implementare uno stack in Python

Implementare uno stack in Python

In programmazione uno stack è una struttura dati che segue il concetto di LIFO: Last in, First out.

Molti linguaggi hanno degli oggetti appositi, Python no.

Ma in verità neanche ci serve.

Mattepuffo's logo
Leggere tag MP3 in Rust con id3

Leggere tag MP3 in Rust con id3

In questo articolo vediamo come usare id3 per leggere i tag dai file MP3 in Rust.

Per l'esempio useremo anche walkdir, in modo da leggere tutti i files che si trovano dentro ad una directory.

Mattepuffo's logo
Connessione a InfluxDB con Python

Connessione a InfluxDB con Python

Sento sempre parlare di InfluxDB e mi sono incuriosito.

Quindi mi sono iscritto al piano gratuito ed ho cominciato a smanettarci con Python.

Ancora devo capire se mi può servire, ma intanto ci faccio qualche test.

Mattepuffo's logo
Leggere journalctl in Python con systemd-python

Leggere journalctl in Python con systemd-python

Il pacchetto systemd-python ci consente di accedere ai log di journaltctl.

Però non è tutto oro quel che luccica; qualche info:

  • prima di tutto è systemd-python e non python-systemd; sono due pacchetti diversi
  • alcune funzioni come add_match o this_boot mi sono andate in errore, e quindi non ho potuto fare alcuni filtri
  • non tutti i records hanno tutti i campi; come vedete ho intercettato gli errori con try/except

Mattepuffo's logo
Creare una TUI in Rust

Creare una TUI in Rust

La costruzione di TUI (text user interface) non è per nulla facile neanche se usiamo librerie apposite.

In questo articolo vediamo come usare il modulo tui in Rust!

Mattepuffo's logo
Creare screenshot di pagine web con Node.js e pageres

Creare screenshot di pagine web con Node.js e pageres

Pageres è una piccola libreria per Node.js che ci permette di creare screenshot di pagine web.

Molto facile da usare, supporta anche la possibilità di impostare più risoluzioni e il cropping.

Inoltre potete anche dare direttamente voi l'HTML di partenza senza indicare un url.

Mattepuffo's logo
Monitorare un sistema Linux con collectl

Monitorare un sistema Linux con collectl

Di programmi per monitorare il nostro sistema Linux ne abbiamo veramente in quantità industriale.

Tra i tanti c'è anche collectl, che rispetto agli altri ha la pecurialità di monitorare praticamente tutto insieme.

Mattepuffo's logo
Usare lo spread operator in Dart

Usare lo spread operator in Dart

Chi usa Javascript dovrebbe conoscere già lo spread operator, che altro non sono che 3 puntini che ci permettono di estendere una collezione.

Detto così è un pò riduttivo; in questo articolo vediamo come usarlo in Dart.

Mattepuffo's logo
Internazionalizzazione in Angular con ngx-translate

Internazionalizzazione in Angular con ngx-translate

In questo articolo vediamo come usare ngx-translate per tradurre le nostre applicazioni Angular.

Dovremmo installare due moduli:

npm install @ngx-translate/core @ngx-translate/http-loader

Il secondo ci servirà per recuperare le lingue dal server; in verità le metteremo tutte dentro alla cartella assets.

Mattepuffo's logo
Creare un menu console in Kotlin

Creare un menu console in Kotlin

All'inizio ho cercato una libreria apposita, come ce ne stanno tante per altri linguaggi.

Alla fine mi sono detto che il menu è composto da tre voci, e quindi può bastare crearselo da soli!

Ovviamente parliamo di un'applicazione in Kotlin da lanciare nel terminale, quindi niente gui.

Mattepuffo's logo
Usare HTTPS in Vert.x con SelfSignedCertificate

Usare HTTPS in Vert.x con SelfSignedCertificate

L'API che sto sviluppando in Java con Vert.x girerà in modalità standalone, e sarà contattabile direttamente tramite indirizzo ip.

Ovviamente, il client che gira su HTTPS blocca la chiamata al server, in quanto di default gira su HTTP.

Vediamo come configurare Vert.x per HTTP con SelfSignedCertificate!

Mattepuffo's logo
Connessione a MariaDB con Kotlin e Persism

Connessione a MariaDB con Kotlin e Persism

Persism è un ORM per Java, e quindi compatibile anche con Kotlin, molto leggero, e che è in grado di connettersi a diversi db.

Questo perchè in verità dobbiamo indicare noi a quale db collegarsi e quale driver usare.

Quindi, ad esempio, se usiamo MariaDB o MySQL, dobbiamo anche installare il driver JDBC apposito.

Oltre a questo, Persism ha vari meccanismi di auto configurazione.

Mattepuffo's logo
Monitorare le attività utente su Linux con psacct

Monitorare le attività utente su Linux con psacct

psacct, che in alcune distro è acct, è tool che ci permette di monitorare le attività utente sulla nostra distro Linux.

Al suo interno ha questi comandi:

  • ac command prints the statistics of user logins/logouts (connect time) in hours.
  • lastcomm command prints the information of previously executed commands of the user.
  • accton commands is used to turn on/off process for accounting.
  • sa command summarizes information of previously executed commands.
  • last and lastb commands show a listing of last logged-in users.

Mattepuffo's logo
Controllare lo stato della batteria in Javascript

Controllare lo stato della batteria in Javascript

Javascript ci mette a disposizione la funzione navigator.getBattery() per visualizzare informazioni sullo stato della batteria.

Tenete a mente che ad oggi (21/10/2022) non è compatibile con Firefox.

A parte questo, l'API è abbastanza completa, in quanto ci fa visualizzare diverse inforazioni oltre lo stato del livello di carica; ad esempio se è in carica o meno.

Mattepuffo's logo
Creare TUI in Kotlin con Lanterna

Creare TUI in Kotlin con Lanterna

Lanterna è una libreria per Java che ci permette di creare delle interfacce testuali simili a quelle create con curses.

Ma questa a descrizione è molto restrittiva, in quanto Lanterna è in grado ci creare anche dei layout complessi, con finestre, pannelli, file dialog, ecc.

Inoltre, è anche possibile usare le stesse classi di Swing (ma non è obbligatorio).

Oggi vediamo come usarla in Kotlin.

Mattepuffo's logo
Implementare il merge sort in C++

Implementare il merge sort in C++

Da Wikipedia:

Il merge sort è un algoritmo di ordinamento basato su confronti che utilizza un processo di risoluzione ricorsivo, sfruttando la tecnica del Divide et Impera, che consiste nella suddivisione del problema in sottoproblemi della stessa natura di dimensione via via più piccola. Fu inventato da John von Neumann nel 1945. Una descrizione dettagliata e un'analisi della versione bottom-up dell'algoritmo apparve in un articolo di Goldstine e Neumann già nel 1948.

Ovviamente possiamo implementarlo in tutti i linguaggi che vogliamo.

Mattepuffo's logo
Usare APP_INITIALIZER in Angular

Usare APP_INITIALIZER in Angular

In Angular abbiamo APP_INITIALIZER che ci permette di eseguire una funzione quando l'app viene iniziliazzata.

Può essere molto comod per eseguire una serie di procedure che devono partire insieme alla app.

Mattepuffo's logo
Intoduzione a Drift in Flutter

Intoduzione a Drift in Flutter

Drift è una libreria per Dart e Flutter per la gestione di un database locale; all'interno la libreria usa SQLite

In questo articolo vediamo una introduzione al suo utilizzo.

Mattepuffo's logo
Connessione a MariaDB con Java e Persism

Connessione a MariaDB con Java e Persism

Persism è un ORM per Java molto leggero, e che è in grado di connettersi a diversi db.

Questo perchè in verità dobbiamo indicare noi a quale db collegarsi e quale driver usare.

Quindi, ad esempio, se usiamo MariaDB o MySQL, dobbiamo anche installare il driver JDBC apposito.

Oltre a questo, Persism ha vari meccanismi di auto configurazione.

Mattepuffo's logo
Sommare elementi stringhe in Lodash sumBy

Sommare elementi stringhe in Lodash sumBy

La funzione sumBy di Lodash è veramente molto comoda; richiede due parametri e con una riga ti da la somma di una determinata colonna di un array.

Solo che a me è capitato che la colonna in questione fosse in formato stringa, e non numero.

Mattepuffo's logo
Usare DuckDB in Node.js

Usare DuckDB in Node.js

DuckDB è un database che potremmo usare al posto del classico SQLite.

Come potete vedere dalla documentazione, supporta parecchi linguaggi; inoltre pare essere più veloce e performante rispetto a SQLite.

Mattepuffo's logo
Validare le email in Flutter

Validare le email in Flutter

Oggi ho testo il pacchetto email_validator per Flutter, che ci consente di validare le email in maniera molto veloce.

Per installarlo potete aggiungere questa dipendenza al pubspec.yaml:

dependencies:
  email_validator: ^2.1.17

Mattepuffo's logo
Creare un Native Web Component in HTML

Creare un Native Web Component in HTML

I Native Web Components sono dei componenti custom creati da noi da usare nelle nostre pagine HTML.

Non so quanto ci sarà utile se usiamo llibrerie / framework; o comunque in generale visto quanti componenti abbiamo già a disposizione.

Però può essere utile sapere come si creano.

Mattepuffo's logo
Leggere il numero di versione in React dal package.json

Leggere il numero di versione in React dal package.json

Ci sono vari motivi per cui ci può essere bisogno di leggere il numero di versione in un'applicazione.

In questo articolo vediamo come fare questa cosa in React; lo leggeremo direttamente dal package.json.

Potremmo anche metterlo dentro ad un file di configurazione a parte, ma ciò vorrebbe dire cambiarlo in più posti; io preferisco così.

Mattepuffo's logo
Decomprimere archivi in Dart

Decomprimere archivi in Dart

In Dart abbiamo la libreria archive che ci permette di manipolare i file compressi in maniera abbastanza semplice.

Qui vediamo come usarla per decomprimere un archivio.

Sono supportati la maggior parte dei formati, che potete vedere sul sito ufficiale.

Mattepuffo's logo
Testare le performance in Laravel 9 con Benchmark

Testare le performance in Laravel 9 con Benchmark

Dalla versione 9.32 di Laravel è stato introdotto l'oggetto Benchmark, che ci permette di eseguire dei testi di performance sulle nostre funzioni.

E' molto facile da usare, e anche molto comodo.

Qui useremo una funziona molto banale, ma il concetto è uguale.

Mattepuffo's logo
Usare i getters e i setters in Javascript

Usare i getters e i setters in Javascript

Cominciamo con il dare una definizione generica.

Getters: sono dei metodi speciali che ci permettono di accedere ad una proprietà che è valorizzata dinamicamente.

Setters: sono dei metodi speciali che ci permettono di settare una proprietà dinamicamente.

Mattepuffo's logo
PDF to audio in Python

PDF to audio in Python

In questo articolo vediamo come usare due librerie, PyPDF2 e pyttsx3, per leggere un file PDF e trasformarlo in audio usando Python.

Attenzione però che non mi ha funzionato su tutti i pc; su alcune distro Linux mi dava errori su dipendenze a livello di sistema non soddisfatte ad esempio.

Solo che non ho avuto tempo per sistemare tutto, quindi mi sono limitato al test sul pc in cui ha funzionato.

Mattepuffo's logo
Creare log in PHP con Monolog

Creare log in PHP con Monolog

Monolog è una libreria per PHP per la creazione di log.

E' molto usata anche all'interno di altri framework come Laravel.

In questo articolo vediamo come usarla all'interno di una nostra applicazione.

Mattepuffo's logo
Implementare il merge sort in Java

Implementare il merge sort in Java

Da Wikipedia:

Il merge sort è un algoritmo di ordinamento basato su confronti che utilizza un processo di risoluzione ricorsivo, sfruttando la tecnica del Divide et Impera, che consiste nella suddivisione del problema in sottoproblemi della stessa natura di dimensione via via più piccola. Fu inventato da John von Neumann nel 1945. Una descrizione dettagliata e un'analisi della versione bottom-up dell'algoritmo apparve in un articolo di Goldstine e Neumann già nel 1948.

Ovviamente possiamo implementarlo in tutti i linguaggi che vogliamo.

Mattepuffo's logo
Gestire le date in Javascript con Day.js

Gestire le date in Javascript con Day.js

Purtroppo ho scoperto Day.js solo alcuni giorni fa, perchè la trovo veramente una super libreria.

In sostanza è una delle varie librerie per Javascript per la getione delle date.

Rispetto ad altre è molto leggera e facile da usare.

Mattepuffo's logo
Usare DuckDB in Python

Usare DuckDB in Python

DuckDB è un database che potremmo usare al posto del classico SQLite.

Come potete vedere dalla documentazione, supporta parecchi linguaggi; inoltre pare essere più veloce e performante rispetto a SQLite.

Mattepuffo's logo
Usare le Generated Column in MariaDB e MySQL

Usare le Generated Column in MariaDB e MySQL

Supponiamo di avere una classica tabella con questi tre campi:

  • id
  • nome
  • cognome

E supponiamo di avere sempre la necessità di visualizzare il nome e il cognome insieme e messi in maiuscolo.

Le SELECT dovrebbero sempre fare il CONCAT + UPPER, e questo può appesantire le prestazioni.

Mattepuffo's logo
Implementare il merge sort in VB.NET

Implementare il merge sort in VB.NET

Da Wikipedia:

Il merge sort è un algoritmo di ordinamento basato su confronti che utilizza un processo di risoluzione ricorsivo, sfruttando la tecnica del Divide et Impera, che consiste nella suddivisione del problema in sottoproblemi della stessa natura di dimensione via via più piccola. Fu inventato da John von Neumann nel 1945. Una descrizione dettagliata e un'analisi della versione bottom-up dell'algoritmo apparve in un articolo di Goldstine e Neumann già nel 1948.

Ovviamente possiamo implementarlo in tutti i linguaggi che vogliamo.