Ultimi 100 articoli

Mattepuffo's logo
Connessione a GitHub in Kotlin

Connessione a GitHub in Kotlin

GitHub API è una libreria per Java che ci consente di connetterci al nostro profilo di GitHub.

Attraverso la libreria possiamo eseguire praticamente tutte le operazioni sui repo, anche aggiungerli e cancellarli.

In questo articolo vediamo come usarla in Kotlin, ma non esploreremo tutte le funzioni.

Mattepuffo's logo
Connessione a GitHub in Java

Connessione a GitHub in Java

GitHub API è una libreria per Java che ci consente di connetterci al nostro profilo di GitHub.

Attraverso la libreria possiamo eseguire praticamente tutte le operazioni sui repo, anche aggiungerli e cancellarli.

In questo articolo vediamo come usarla, ma non esploreremo tutte le funzioni.

Mattepuffo's logo
Processare immagini da Google AI Studio con Angular

Processare immagini da Google AI Studio con Angular

Quello che vogliamo ottenere è inviare richieste HTTP a Google AI Studio, che fa parte delle Gemini API, per processare una immagine.

Invieremo anche un prompt; il tutto da Angular.

Il codice potrebbe cambiare un pò a seconda della versione di Angular; nel mio caso parliamo della versione 19.

Mattepuffo's logo
Gestire le code in PHP con la SPL

Gestire le code in PHP con la SPL

La SPL di PHP ha un sacco di classi utili per gestire molte operazioni.

Solo che non si conoscono.

In questo articolo vediamo due classi per gestire le code:

  • SplQueue per gestire code FIFO (First IN, First OUT)
  • SplStack per gestire code LIFO (Last IN, Last out)

Mattepuffo's logo
Configurare YAML in PHP su Windows

Configurare YAML in PHP su Windows

Ho installato PHP (8.4) su Windows, senza usare XAMPP o simili.

Funziona tutto, tranne che nell'installazione delle librerie in un progetto che mi dava questo errore:

install --no-interaction
 Installing dependencies from lock file (including require-dev)
 Verifying lock file contents can be installed on current platform.
 Your lock file does not contain a compatible set of packages. Please run composer update.
 
   Problem 1
     - Root composer.json requires PHP extension ext-yaml * but it is missing from your system. Install or enable PHP's yaml extension.
 
 To enable extensions, verify that they are enabled in your .ini files:
     - C:\php-8.4\php.ini
 You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
 Alternatively, you can run Composer with `--ignore-platform-req=ext-yaml` to temporarily ignore these required extensions.
 Failed to install packages for  ./composer.json. Platform requirements are missing.

Praticamente devo installare la DLL corretta, e qui vediamo come fare.

Mattepuffo's logo
Generare PDF in Micronaut

Generare PDF in Micronaut

Ho dovuto aggiungere una funzione di creazione e download PDF ad un progetto sviluppato in Java e Micronaut.

Per i PDF ci sono diverse librerie da usare in Java, ed in questo caso ho optato per OpenPDF.

Do per scontato che abbiamo già un progetto Micronaut funzionante.

Mattepuffo's logo
Creare interfacce CLI in Go e Cobra

Creare interfacce CLI in Go e Cobra

Cobra è una libreria per Go che ci consente di creare delle applicazioni CLI con vari comandi/menu/flag/ecc.

Io vi posterò solo un piccolo esempio per iniziare, anche se penso possa fare molto di più visto che da quanti altri software è usato.

Mattepuffo's logo
Unit test in Javascript con Mocha

Unit test in Javascript con Mocha

Mocha è una libreria per Javascript per eseguire unit test.

E' possibile usarla anche direttamente nel browser, cosa che faremo noi.

Quindi, nel caso specifico, non installeremo nulla, ma faremo un classico include da un CDN.

Mattepuffo's logo
Accessors e mutators in Eloquent

Accessors e mutators in Eloquent

Gli accessors e mutators in Eloquent ci permettono di "trasformare" i valori che ci arrivano da database in modo da poterli visualizzare come ci serve.

Come regola le funzioni devono avere gli stessi nomi dei campi.

Poi l'unica differenza è che gli accessors agiscono in get, mentre i muitators in set.

Comunque non fanno nessuna modifica ai valori su db (fino a che non facciamo noi un'operazione ovviamente).

Mattepuffo's logo
Unit test in Kotlin con JUnit 5

Unit test in Kotlin con JUnit 5

Ho specificato la versione 5 di JUnit perchè da quello che ho capito presenta delle differenze con la 4.

A partire anche dal repo da cui installare la libreria.

In questo articolo vediamo come usarla in Kotlin.

Mattepuffo's logo
Richieste HTTP in Python con AIOHTTP

Richieste HTTP in Python con AIOHTTP

AIOHTTP è una libreria HTTP per Python e asyncio che può funzionare sia per creare un server che un client.

In questo articolo vediamo un semplice esempio di client, in cui facciamo una richiesta HTTP e leggiamo il contenuto in formato JSON.

Mattepuffo's logo
Unit test in Rust

Unit test in Rust

Rust ha già praticamente tutto per eseguire unit test.

Basta usare le sue macro.

In questo articolo vediamo qualche esempio.

Mattepuffo's logo
Formattare testo multinea in Python

Formattare testo multinea in Python

Vi può essere capitato di usare un testo multinea in Python, e di aver messo degli spazi per rendere il codice più leggibile.

Solo che se lo stampate così com'è, avrete la stessa indentazione.

Per fare un pò di pulizia possiamo usare il modulo textwrap.

Mattepuffo's logo
Scanner delle vulnerabilità con Nuclei

Scanner delle vulnerabilità con Nuclei

Nuclei è un vulnerability scanner multi piattaforma che supporta diversi "test".

Ha anche diversi templates, basati su YAML, e una versione enterprise.

Noi vediamo come installarlo e usarlo per qualche test basico.

Per l'installazione ho scaricato l'ultimo binario per Linux, ma potete vedere i vari metodi di installazione da qui.

Mattepuffo's logo
Eseguire test di componenti in React Typescript con Jest

Eseguire test di componenti in React Typescript con Jest

In realtà non useremo solo Jest per eseguire i test, ma diciamo che è la libreria di punta.

Comunque dovremmo installare e configurare parecchia roba, soprattutto perchè stiamo usando Typescript.

Inoltre io ho creato il progetto con Vite, che può portare a delle differenze rispetto ad altri modi con cui potete creare i progetti in React.

Insomma, come al solito troppe possibilità e troppe differenze......

Mattepuffo's logo
Unit test in Java con JUnit 5

Unit test in Java con JUnit 5

Ho specificato la versione 5 di JUnit perchè da quello che ho capito presenta delle differenze con la 4.

A partire anche dal repo da cui installare la libreria.

Mattepuffo's logo
Localizzazione in Spring Boot

Localizzazione in Spring Boot

Di base gestire le linge in Spring Boot è abbastanza semplice.

Potete vedere la discussione sul forum.html.it per quanto riguarda le dritte che mi hanno dato.

In questo articolo vi faccio vedere i passaggi.

Cominciamo con il creare i file delle lingue, con il default che è l'italiano.

Mattepuffo's logo
Connessione SSH in Kotlin con JSCH

Connessione SSH in Kotlin con JSCH

In questo articolo vediamo come connetterci ad un server SSH in Kotlin usando JSCH.

Dall'ultima volta che l'ho usata ho visto che c'è stato un fork con diversi aggiornamenti di sicurezza.

Quindi noi useremo l'ultima versione.

Mattepuffo's logo
Connessione SSH in Go

Connessione SSH in Go

In questo articolo vediamo come connetterci ad un server SSH in Go.

Se la connessione va a buon fine lanceremo un semplice comando.

Un esempio basico da cui partire insomma.

Mattepuffo's logo
Generare una thumbnail da PDF in PHP con ImageMagick

Generare una thumbnail da PDF in PHP con ImageMagick

Abbiamo parlato svariate volte di ImageMagick anche in ambito PHP.

In questo articolo vediamo come usarla per creare una thumbnail da un PDF.

Do per scontato che abbiate già l'estensione attivata; come farlo dipende da quale OS usate, o su quale provider siete.

Nel caso è molto probabile che stia installato e attivo tutto quanto.

Mattepuffo's logo
Creare annotazioni custom in Java

Creare annotazioni custom in Java

In Java conosciamo le annotazioni principalmente da Spring che ne fa largo uso.

Col passare del tempo sono uscite parecchie librerie che ci consentono di usarel (chi ha detto Lombock?).

Volendo è possibile anche crearne di custom.

Ovviamente non vi capiterà spesso di usarle, ma può essere utile sapere come fare.

Mattepuffo's logo
Caching in Python con lru_cache

Caching in Python con lru_cache

Il caching può essere fondamentale in tante applicazioni.

In Python abbiamo diverse possibilità, tra cui il caching incluso nel modulo functools.

Tra i vari sistemi disponibili abbiamo LRU:

Least Recently Used (LRU) -> Evicts the least recently used entry -> Recently used entries are most likely to be reused

Mattepuffo's logo
Connessione a Supabase in Flutter

Connessione a Supabase in Flutter

Supabase viene descritto come un'alternativa a Firebase.

Si tratta sostanzialmente di un db basato su Postgres che ci offre diverse funzioni avanzate.

In questo articolo vediamo come eseguire operazioni sul db da Flutter.

Do per scontato che abbiate già un account e creato un progetto.

Mattepuffo's logo
Usare Bootstrap 5 in Django

Usare Bootstrap 5 in Django

In questo articolo vediamo come usare Bootstrap 5 in Django.

Per l'installazione possiamo usare un package apposito che possiamo installare con pip:

pip install django-bootstrap-v5

Mattepuffo's logo
Drag and Drop in Flutter

Drag and Drop in Flutter

In Flutter abbiamo già a disposizione dei widget per il drag and drop.

In questo articolo useremo Draggable, il widget che può essere spostato, e DragTarget, cioè il target del drop.

Ovviamente è un esempio abbastanza basico per partire e capire il funzionamento di base.

Mattepuffo's logo
Montare la temp directory in RAM in Linux

Montare la temp directory in RAM in Linux

Ci sono vari motivi per caricare la temp directory in RAM in Linux.

Tra cui un discorso di privacy e di pulizia.

Montandola in RAM ad ogni riavvio non ci ritroveremo più con i files temporanei.

Tenete bene a mente questa cosa.

Mattepuffo's logo
Connessione a MongoDB in Spring Boot e Java

Connessione a MongoDB in Spring Boot e Java

La connessione a MongoDB in Spring Boot rispetto ad altri db non è molto differente.

In questo articolo vediamo come fare.

Do per scontato che abbiate già MongoDB disponibile; nel mio caso inoltre non ho impostato credenziali al db in quanto non necessario.

Mattepuffo's logo
Connessione a CockroachDB in Python con psycopg

Connessione a CockroachDB in Python con psycopg

In questo articolo vedremo come connetterci ad un db CockroachDB in Python usando psycopg (versione 3).

Ho specificato psycopg perchè in verità possiamo usare anche altro, che magari vedremo in un articolo.

Do per scontato che abbiate già un account e le credenziali.

Mattepuffo's logo
Connessione a MongoDB in Go

Connessione a MongoDB in Go

In questo articolo vediamo come connetterci ad un database MongoDB in Go ed eseguire alcune operazioni.

Il db in questione è installato su un server della rete locale, quindi non è uno dei servizi in cloud; ma comunque cambia poco, praticamente solo l'url.

Mattepuffo's logo
Riavviare un servizio automaticamente in Systemd

Riavviare un servizio automaticamente in Systemd

In Systemd possiamo veramente fare tante cose in autonomia, basta solo un pò di docuementazione.

In questo articolo vediamo come impostare un servizio per il riavvio automatico.

Per prima cosa dobbiamo prendere il nome esatto del servizio che ci interessa.

Mattepuffo's logo
Comprimere cartelle in Scala

Comprimere cartelle in Scala

In questo articolo vediamo come comprimere una cartella in formato ZIP in Scala.

Nella cartella prenderemo anche tutte le eventuali sotto cartelle.

Non sono richieste librerie esterne, in quanto useremo le classi standard di Java.

Mattepuffo's logo
H2 ON DUPLICATE KEY

H2 ON DUPLICATE KEY

In H2 non abbiamo l'istruzione ON DUPLICATE KEY, ma possiamo comunque raggiungere lo scopo in due modi diversi.

Alla fine della fiera il risultato è lo stesso.

La nostra tabella ha questi campi:

  • email
  • nome
  • cognome

Dove email è undice univoco.

Mattepuffo's logo
Creare un menu console in Scala

Creare un menu console in Scala

Per Scala non ho trovato molte librerie per creare un menu per console facili da usare e che dessero qualche effettivo vantaggio.

Quindi alla fine ho deciso di non usarne.

In questo articolo vediamo come creare un menu che vada in loop.

Mattepuffo's logo
Connessione ad H2 in Scala

Connessione ad H2 in Scala

H2 è un database portatile molto usato in ambito Java.

In questo articolo vediamo come usarlo con Scala.

Prima di tutto installiamo la dipendenza.

Mattepuffo's logo
Relazioni OneToMany in Spring Boot e JPA

Relazioni OneToMany in Spring Boot e JPA

In questo articolo vediamo come gestire le relazioni OneToMany in Spring Boot e JPA.

Do per scontato che abbiate già creato il progetto e installato le varie dipendenze.

Inoltre io sto usando Lombock, non è obbligatorio ma consigliato.

Come database io uso MySQL, ma non dovrebbe cambiare nulla.

Mattepuffo's logo
Usare le Common Table Expression in MySQL

Usare le Common Table Expression in MySQL

Le Common Table Expression (CTE) sono dei result-set temporanei che esistono solo durante l'esecuzione della query, e ci permettono di assegnare un nome ad un insieme di risultati.

Fanno parte dello standard SQL, quindi esistono in tutti i db.

In questo articolo vediamo come usarle in MySQL.

Mattepuffo's logo
Ricerca binaria in Kotlin con binarySearch

Ricerca binaria in Kotlin con binarySearch

Ho scoperto qualche giorno fa che esiste Arrays.binarySearch per eseguire una ricerca binaria.

Non so da quale versione del JDK esiste, comunque è bene saperlo.

In questo articolo vediamo un paio di esempi di utilizzo in Kotlin.

Mattepuffo's logo
Usare gli enum in Scala 3

Usare gli enum in Scala 3

In questo articolo vediamo come usare gli enum in Scala 3.

Ho specificato la versione 3 perchè ho capito che sono stati fatti parecchi cambiamente rispetto alla 2 che non conosco.

In generale per enum intendiamo un gruppo di costanti che possiamo riutilizzare nel nostro programma.

Mattepuffo's logo
Caching in Go con BigCache

Caching in Go con BigCache

BigCache è una libreria per Go per il caching, consigliata in caso di mole di dati considerevole.

Non ho fatto molti test in questo senso, ma leggendo in giro mi sembra di aver capito che le prestazioni rispetto ai concorrenti siano migliori solo nel caso di molti dati.

In caso contrario non è necessario usarla.

Mattepuffo's logo
Connessione a MySQL in Vaadin con Java, Spring Boot e Flow

Connessione a MySQL in Vaadin con Java, Spring Boot e Flow

Vaadin è un fullstack framework per Java e Kotlin che ci mette a disposizione alcune opzioni sia per il back end che per il front end.

In questo articolo vediamo come connetterci ad un db MySQL usando questa configuazione:

  • Java
  • Spring Boot per il back end
  • Flow per il front end --> Flow ci permette di costruire la parte di front end direttamente in Java (non entro nel merito se sia buono o no)

Per interagire con il db ho usato JPA, ma non è obbligatorio.

Mattepuffo's logo
Installare MongoDB su Manjaro e Arch Linux

Installare MongoDB su Manjaro e Arch Linux

Ho avuto qualche problema ad installare MongoDB su Manjaro/Arch Linux.

Alla fine sono riuscito eseguendo questi passaggi.

Come prima cosa dovremmo installarlo da AUR, quindi vi consiglio di avere un client già installato.

Io uso yay.

Mattepuffo's logo
Connessione a Mysql e MariaDB in Java e Quarkus

Connessione a Mysql e MariaDB in Java e Quarkus

Quarkus è uno dei vari web framework per Java.

In questo periodo sta andando parecchio di moda, e devo dire che ha il suo perchè.

O almeno dai pochi test che ho fatto; unica cosa che non mi sta piacendo è la documentazione, che trovo scarna e confusionaria.

Ad esempio non spiega come usare bene JDBC e AgroalDataSource per eseguire una query su db, cosa che faremo in questo articolo.

Mattepuffo's logo
Geolocalizzazione in Flutter con geolocator

Geolocalizzazione in Flutter con geolocator

In Flutter abbiamo il package geolocator che ci consente di geolocalizzare il dispositivo.

In questo articolo vediamo un esempio di utilizzo; io l'ho testato solo su Anrdoid, quindi vi indico cosa aggiungere come permessi su questo OS.

Sulla pagina ufficiale ci sono comunque le istruzioni per tutti gli altri.

Mattepuffo's logo
Rimuovere duplicati in SQL Server con ROW_NUMBER e PARTITION

Rimuovere duplicati in SQL Server con ROW_NUMBER e PARTITION

Per rimuovere duplicati da una tabella ci sono vari modi.

In SQL Server possiamo anche usare l'accoppiata ROW_NUMBER/PARTITION.

Quindi, supponiamo di avere una tabella così composta:

  • ID
  • Email
  • Nome
  • Cognome
  • CittaResidenza

E di avere delle email associate ad un cognome/citta duplicate.

Mattepuffo's logo
Escludere una categoria dalla sidebar in Wordpress

Escludere una categoria dalla sidebar in Wordpress

La sidebar del blog di Wordpress è abbastanza configurabile attraverso il widget apposito.

Solo che può capitare che il widget non basti, magari perchè il tema non lo permette.

Se volessimo nascondere in maniera forzata alcune categorie possiamo farlo anche in altri modi.

Mattepuffo's logo
Identificare le chiavi univoche in SQLite

Identificare le chiavi univoche in SQLite

In questo articolo vediamo come identificare le chivi univoche in un db SQLite.

Supponiamo di avere una tabella persone che ha un:

  • campo univoco che è il codice fiscale che abbiamo creato in fase di creazione tabella
  • e un campo email sul quale abbiamo impostato l'indice successivamente

Mattepuffo's logo
Configurare Nginx come reverse proxy

Configurare Nginx come reverse proxy

Supponiamo di avere già un web server attivo sulla porta 80.

Ma sul server abbiamo un altro servizio un ascolto sulla porta 3000, ma non vogliamo esporre la porta sulla rete.

Come possiamo fare?

Con un reverse proxy, ed in genere per fare questo in ambito Linux viene usato Nginx!

Mattepuffo's logo
Upsert in Ktorm

Upsert in Ktorm

In un precedente articolo abbiamo visto come connetterci ad un db MySQL/MariaDB in Kotlin con  Ktorm.

In questo vediamo come fare l'upsert, cioè come gestire l'insert quando troviamo un valore impostato come univoco.

Mattepuffo's logo
Escludere una categoria dalla pagina shop in WooCommerce

Escludere una categoria dalla pagina shop in WooCommerce

In sostanza devo escludere una categoria dalla pagina shop di WooCommerce.

Ma se invece vado nella pagina di quella categoria i prodotti li devo vedere.

Per fare ciò non bastano le opzioni di visibilità del prodotto, ma dobbiamo fare una modifica al functions.php.

Probabilmente c'è anche qualche plugin che lo fa, ma direi che non è necessario.