Usare Grid.js in Svelte
Abbiamo già visto Grid.js in un altro articolo; in questo vediamo come usarlo con Svelte!
Prima di tutto installiamo la libreria con npm:
npm install gridjs gridjs-svelte
Abbiamo già visto Grid.js in un altro articolo; in questo vediamo come usarlo con Svelte!
Prima di tutto installiamo la libreria con npm:
npm install gridjs gridjs-svelte
In un precedente articolo abbiamo visto come inviare email in Go usando il package standard net/smtp.
In questo vediamo come inviare email usando un package esterno apposito: Gomail!
In questo articolo vediamo come allineare una serie di immagini al centro di un div usando CSS e Flexbox.
Ovviamente ci sono svariati modi per ottenere questa cosa, ma con Flexbox mi sono trovato bene.
Lo ammetto, sono un grandissimo amante dell'istruzione ON DUPLICATE KEY UPDATE di MariaDB/MySQL.
In Laravel possiamo usare la funzione upsert di Eloquent per ottenere lo stesso risultato.
Dovrebbe essere compatibile almeno con le versioni 9 e 10 di Laravel; e da quello che ho capito, upsert funziona anche con altri db che non hanno questa istruzione.
Da Wikipedia:
In informatica il Bubble sort o ordinamento a bolla è un semplice algoritmo di ordinamento di liste di dati. In esso l'insieme di dati viene scansionato, ogni coppia di elementi adiacenti viene comparata ed i due elementi vengono invertiti di posizione se sono nell'ordine sbagliato. L'algoritmo continua nuovamente a ri-eseguire questi passaggi su tutta la lista fino a quando non vengono più eseguiti scambi, situazione che indica che la lista è ordinata.
In questo articolo ne vediamo una implementazione in Python.
Di default Svelte non ha una libreria specifica per eseguire richieste HTTP; nel senso che usa quella standar di Javascript: fetch!
Ovviamente potete usarne anche altre; in questo articolo vediamo come usare fetch per recuperare dati da una API e visualizzarli in tabella.
Svelte è totalmente differente ad altri "competitors" come Angular o React.
Ho cominciato questi giorni un pò a studiarlo, e non sembra per nulla male.
In questo articolo vediamo qualcosa di molto soft, e cioè come cambiare titolo ad una pagina in maniera dinamica.
In Javascript i web workes ci permettono di eseguire dei long task in background, senza impattare sulla UI.
In questo articolo vediamo un esempio basico di come usarli in React.
Le ConcurrentHashMap fanno parto delle Java Collections, ed implementano l'interfaccia Map.
Sono sostanzialmente delle strutture dati chiave:valore thread safety.
Ma rispetto ad altre strutture simili, hanno dei vantaggi in termini di performance.
Personalmente mi trovo già bene con il modo standard con cui React gestisce gli state.
Però ho voluto provare Zustand, che pare essere una libreria sempre più usata per questo scopo.
In questo articolo vediamo un pò di codice; il mio progetto si basa su Typescript, ma la libreria supporta anche Javascript.
In Go abbiamo il package database/sql che ci fornisce una interfaccia generica per interagire con un database.
A questa interfaccia va fornito un driver apposito, che dipende dal db ovviamente; qui la lista di tutti i db supportati.
In questo articolo vediamo come connetterci ad db MySQL/MariaDB.
Il Quicksort è un algoritmo di ordinamento ricorsivo.
Su Wikipedia trovate spiegazioni più dettagliate.
In Swift possiamo usare gli ENUM passandogli dei parametri.
Non c'è un limite al numero di parametri che possiamo passargli, e possiamo anche assegnargli un nome.
L'eventuale spostamento di colonne in una tabella in genere lo faccio da programma (DataGrip, phpMyAdmin, ecc).
A quanto non tutti, però, supportano hanno questa funzione.
Per creare file XML con Laravel, non abbiamo bisogno di aggiungere nessuna libreria esterna, in quanto ci basta SimpleXMLElement!
In questo articolo vediamo come creare e scaricare un file XML.
Javascript ci mette a disposizione la share API per la condivisione di contenuto direttamente da pagina web.
Non tutte le funzionalità sono compatibili al 100% con tutti i browser ancora, ma pare sia una API in continuo aggiornamento.
Javascript ha la funzione built-in setTimeout per impostare un timeout al codice.
Ma in realtà questa funzione esegue un codice in maniera asincrona, ma non fa un vero e poprio sleep.
In questo articolo vediamo come installare Google Chrome su Debian 12.
Anche se non penso cambi molto quale versione di Debian stiamo usando.
In questo articolo vediamo come inviare email in Go usando SMTP.
Non faremo uso di librerie esterne, in quanto abbiamo già l'occorrente nel package net.
In React abbiamo le cosidette props, che possono essere usate in molti modi, e risultano molto comode.
Qui sotto un esempio di codice in cui passiamo un componente JSX come prop ad un altro componente.
In questo articolo vediamo come inviare una email in Rust usando SMTP.
Faremo uso della libreria lettre, molto facile da usare.
In questo articolo vediamo come usare spinkit in Flutter!
In sostanza si tratta di una libreria che contiente parecchi loader già preconfezionati.
Inoltre sembra essere compatibile con tutte le piattaforme.
RxPy è una implementazione per Python di ReactiveX, un API per la programmazione asincrona.
In questo articolo vediamo un esempio del suo utilizzo.
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.
Quindi, partendo da un elemento casuale:
Ecco perchè l'array deve essere ordinato.
In questo articolo vediamo un esempio di come usare la Web Animation API in Javascript.
Non sono richieste librerie esterne!
Il tutto avviene grazie al metodo animate, che richiede alcuni parametri.
La closure, conosciute anche come funzioni anomine o lambda in altri linguaggi, sono delle funzioni senza nome che possiamo assegnare ad una variabile, passare come parametro o restituire come valore.
In questo articolo ne vediamo un paio di esempi in Swift.
RxJava è una implementazione per Java di ReactiveX, un API per la programmazione asincrona.
In questo articolo vediamo un esempio del suo utilizzo.
Invieremo delle richieste tramite WebSocket; purtroppo non posso mettervi l'url che ho usato io perchè non è pubblico.
In questo articolo vediamo come creare un file XML, e poi leggerlo, in Go.
Come spesso accade in questo linguaggio, abbiamo già tutto il necessario, senza dover scaricare librerie esterne.
In questo articolo vediamo come creare e leggere file CSV in Go.
Non servono librerie esterne, in quanto Go integra già tutto.
Per leggere e scrivere file CSV in Kotlin possiamo usare la libreria Apache Commons CSV, che possiamo installare come dipendenza.
Se usate Gradle:
dependencies {
implementation("org.apache.commons:commons-csv:1.10.0")
}
In questo articolo vediamo come visualizzare un video di YouTube nella nostra applicazione Angular.
Specifico che la versione che sto usando è la 16, che è la minima richiesta dalla libreria che useremo: youtube-player!
Una delle cose che mi piace molto di Flutter è la presenza di componenti che servono solo a svolgere ruoli ben definiti.
Ad esempio DecoratedBox, che ci serve per decorare altri componenti.
Certo, a volte può risultare confusionario, ci si deve fare l'abitudine.
In questo articolo vediamo come creare un end-point in un nostro progetto .NET Core Web API per creare e scaricare un file ZIP.
Come linguaggio useremo C#.
La cartella dove ci stanno i files da comprimere si troverà all'interno del progetto, e la chiamiamo Files.
Li dentro mettete un pò di files.
In Swift abbiamo la possibilità di creare delle funzioni annidate dentro altre funzioni.
In questo articolo vediamo qualche esempio.
In Go abbiamo tutti gli strumenti necessari per fare il parsing di un URL e visualizzare i parametri in query string.
In questo articolo vediamo un esempio.
In questo articolo vediamo come eseguire il parsing di un JSON, remoto, in Go.
Useremo anche delle custom struct per incapsulare gli elementi.
Ovviamente la struttura delle struct dipende dal JSON di partenza.
In Python i decoratori vengono utilizzati principalmente per espandere le funzionalità di una funzione.
Sostanzialmente si tratta di riutilizzare un pezzo di codice su varie funzioni chiamandolo come un decoratore e non come una funzione.
Detta così può risultare più complicato di quello che è; ma se avete programmato in Java o simili, sicuramente avete già incontrato i decoratori.
PTerm è una libreria per Go che ci consente di creare una TUI.
In questo articolo vediamo qualche esempio.
In Swift tutti i parametri passati ad una funzione sono considerati delle costanti.
In pratica, quindi, non si possono modificare.
reStructuredText (RST, ReST, o reST) è un formato usato principalmente in Python per la documentazione tecnica.
Potete leggere su Wikipedia un pò di info utili.
In questo articolo vediamo come creare il formato RST in Python.
Chroma è descritto come un "AI-native open-source embedding database".
Sostanzialmente si tratta di un embedded-db di tipo document.
I dati possono essere salvati in-memory o su file.
L'input di tipo file di HTML, negli annia si è molto evoluto.
In questo articolo vediamo come usarlo per avviare la fotocamera del nostro dispositivo.
La cosa bella è che sul browser avviato su un pc, si comporterà come da standard.
Dalla versione 16 di Angular possiamo leggere i parametri di routing attraverso @Input.
E sinceramente la trovo una bella comodità.
In questo articolo vediamo come usarlo e quali modifiche adottare.
Partiamo dall'esempio classico.
In Flutter possiamo cambiare il nome dell'applicazione nel caso in cui abbiamo "sbagliato" in fase di creazione di progetto.
O anche semplicemente perchè vogliamo personalizzarlo.
Ovviamente va fatta una modifica per ogni piattaforma supportata.
Può capitare spesso di dover usare localStorage/sessionStorage in applicazioni scritte in React.
Ma invece di richiamare ogni volta le varie funzioni get/set, possiamo creare un hook personalizzato.
In un precedente articolo, abbiamo visto come listare files in una cartella in Go.
In questo vediamo come fare la stessa cosa ma in maniera ricorsiva.
Quindi andremmo a listare anche i files nelle sottocartelle.
Come sapete, in generale, possiamo impostare che una funzioni accetti uno o più parametri.
Ma se ad esempio volessimo avere la possibiloità di passare in un parametro un indefinito numero di valori?
In Swift possiamo usare i variadic!
Hono è un web framework per Javascript e Typescript molto facile da usare, ed anche molto veloce.
Rispetto ad altri pare abbia un peso molto minore.
In questo articolo vediamo qualche esempio.
Per ottenere informazioni di sistema in Go abbiamo l'ottimo package sysinfo!
Prima di tutto dobbiamo "installarlo":
go get github.com/zcalusic/sysinfo
In Go abbiamo, almeno, due modi per listare files e directories:
Qui sotto vediamo un esempio di entrambi.
n questo articolo vediamo un esempio di creazione di una funzione in MariaDB e MySQL.
Le funzioni possono essere molto utili per svolgere compiti molto specifici.
Rispetto ad una query "secca", inoltre, vengono cachate, e quindi sono anche più veloci.
Tenete in considerazione che una funzione può tornare un valore, non un record set.
In questo articolo vediamo un esempio di creazione di una funzione in Oracle.
Le funzioni possono essere molto utili per svolgere compiti molto specifici.
Rispetto ad una query "secca", inoltre, vengono cachate, e quindi sono anche più veloci.
Tenete in considerazione che una funzione può tornare un valore, non un record set.
Nella data directory in MariaDB e MySQL ci sono salvate le informazioni con cui vengono gestiti i database.
Può essere molto utile sapere qual'è, ed in questo articolo vediamo due modi per ottenere questa info.
In Swift possiamo far tornare ad una funzione più valori usando le tuple.
Che altro non sono che una struttura dati che può contenere valori di diverso tipo.
In Swift le tuple sono come un array che contiene dati di tipo di diverso.
Possono essere molto utili in diversi casi.
Una cosa importante da ricordare però, è che possiamo modificare gli elementi di una tupla, ma non possiamo aggiungere o rimuovere elementi.
In Dart una sealed class è una classe che non può essere estesa o implementata al di fuori della "libreria" dove è stata creata.
Questo fa si che si può aver un maggior controllo su dove può essere usata.
Di default una sealed class è astratta, il che vuole dire che non può essere istanziata direttamente.
Una goroutine ci permette di usare la concorrenza/ programmazione asincrona in Go.
Rispetto ad altri linguaggi ho trovato i concetti più semplici da imparare.
Una delle cose che mi è piaciuta di più è la possibilità di usare i channels per lo scambio dati tra le varie routines.
In questo articolo vediamo un paio di esempi.
Di default Dart non permette ad una funziona di ritornare più valori.
Dalla versione 3, però, è possibile usare il tipo Records per ottenere sostanzialmente lo stesso risultato.
Rocket è un web framework per Rust.
Nel complesso mi sembra completo, anche se la documentazione non mi sembra proprio facile da leggere.
In questo articolo vediamo un esempio introduttivo.
Supponiamo di avere un video da mandare in output su una pagina web attraverso il classico tag video.
Solo che la sorgente è su un dominio differente dalla nostra pagina web.
Se mettete il classico url secco, otterrete il classico errore CORS (o almeno così mi è successo....).
Dioxus è una libreria per Rust per la creazione di interfacce grafiche.
E' compatibile con svariate piattaforme, e prende un pò di concetti da React (si avete capito bene).
Sulla documentazione trovate le varie istruzione per le varie piattaforme.
Prendendo la definizione da Wikipedia, un GUID è:
Il GUID (Globally Unique Identifier, identificatore unico globale) è un numero pseudo-casuale usato nella programmazione software, per poter distinguere vari oggetti. Il tipo più noto di GUID è l'utilizzo di Microsoft dell'UUID, ideato dalla Open Software Foundation, ma vi sono anche altri usi, come quello all'interno di XML.
I GUID vengono utilizzati soprattutto nell'ambito del Component Object Model (COM) di Microsoft, tuttavia sono diffusi anche in altri sistemi software, quali Oracle e Novell.
In Go per usare gli argomenti da riga di comando possiamo usare os.Args o flag.
Il primo fa il parsing di tutto ciò che viene dopo il file .go da lanciare.
Il secondo ci permette di usare dei flag veri e propri.
In questo articolo vi mostro i passaggi che ho usato per aggiornare il mio di pc di test da Debian 11 a Debian 12.
Per esperienza personale, non sempre fila tutto liscio.
Cominciamo questa settimana con un piccolo snippet di codice Javascript: come identificare la lingua del browser.
La cosa può essere molto comoda in vari scenari: redirect automatico, mostrare prodotto più appropriati, ecc.
In una piccola app che sto sviluppando in Flutter, ho avuto bisogno di generare degli UUID.
Per Dart e Flutter abbiamo un package apposito: uuid!
Go non ha il classico try/catch/finally per gestire gli errori.
Ma semplicemente abbiamo l'interfaccia Error e il package errors attraverso i quali possiamo gestire gli errori ed intercettarli.
Nel senso che Go incentiva l'intercettazione "manuale" degli errori, piuttosto che quella "automatica" che abbiamo in altri linguaggi.
Un tempo le applicazioni web venivano renderizzate dal server.
E parliamo dei siti fatti interamenti in PHP, .NET, ecc.
Poi, con l'avvento di Angular, React, ecc..., la redenrizzazione grafica è stata demandata al client.
Rispetto ad altri linguaggi Go ha un modo un pò tutto suo di eseguire richieste HTTP.
Non tanto nell'eseguire la richiesta vera a propria, ma quanto nel leggere la risposta.
Come potete vedere dalla documentazione, la funzione Get restituisce due valori:
In Go è possibile che una funzione ritorni più valori, e questa è una cosa che trovo molto comoda.
In realtà è una cosa studiata, in quanto Go usa questo "trucchetto" anche per l'intercettazione degli errori (che vedremo in un altro articolo).
In questo articolo vediamo come collegare Fastify ad un db MySQL.
Prima di tutto dobbiamo installare un package apposito:
npm i @fastify/mysql
Fatto questo vediamo il nostro codice Javascript.
In un piccolo programma scritto in Rust, avevo bisogno di creare degli UUID.
Per farlo possiamo usare un pacchetto specifico.
Go mette a disposizione le interface per organizzare meglio il codice; ad esempio se abbiamo bisogno di assegnare delle funzione a delle struct.
Per chi conosce la OOP, la funzione è molto simile, solo che è differente il modo in cui vengono usate.
In primis, come vedremo, non c'è bisogno di implementarle in maniera specifica; in Go le interfacce vengono implementate in maniera implicita.
Le Map sono strutture dati chiave:valore, dove la chiave è univoca.
Esistono in praticamente tutti i linguaggi, con le dovute differenze ovviamente.
In questo articolo vediamo come usarle in Go.
Qui abbiamo visto come creare dei tipi custom in Go, ma non abbiamo approfondito il discorso sulle struct.
In questo articolo vediamo un uso più avanzato facendo un pò di esempi.
Suppniamo di avere una lista di oggetti in Dart, e di volerla ordinare.
L'oggetto List in Dart ha l'apposito metodo sort a cui passiamo le "regole" di ordinamento.
Vediamo qualche esempio.
Ho un ENUM che poi devo usare come filtri.
E voglio riempire una dropdown in Flutter usando quell'oggetto.
La cosa è abbastanza semplice in realtà!
Come sappiamo con Flutter possiamo creare app anche per desktop con un unico codebase.
Solo che, ovviamente, i programmi per desktop possono avere alcune critictà diverse dal web o mobile.
Ad esempio, potremmo voler gestire il titolo della finestra, la barra del titolo, le dimensioni, ecc.
Fastify è un web framework per Javascript e Node.js, con una struttura molto simile ad altri web framework, e con molti plugin a disposizione.
In questo articolo vediamo un esempio introduttivo.
Nella libreria standard di Go abbiamo il package math/rand che ci permette di generare valori random.
In questo articolo vediamo qualche esempio su come usarla.
Nel package ioutil della libreria standard di Go, troviamo parecchie funzioni che ci consentono operazioni di I/O in maniera rapida.
In questo articolo vediamo come usare WriteFile per creare un file.
In questo articolo vediamo come creare una dropdown in Flutter usando FutureBuilder.
In sostanza i dati li prenderemo da una API in formato JSON.
Ovviamente prima dovete installare il package http.
Che Python è un linguaggio molto adattabile lo sapevamo già, qui ne abbiamo una ulteriore prova.
In pratica vederemo come creare una macro, basica ovviamenre, per LibreOffice.
Prima di tutto dobbiamo installare due cose.
Go, rispetto ad altri linguaggi, non ha classi per creare degli oggetti custom.
Per ottenere la stessa cosa dobbiamo usare type e struct.
default-composer è una piccola libreria per Javascript che ci consente di impostare dei valori di defaults in oggetti, anche se hanno altri oggetti innestati.
Ovviamente possiamo ottenere lo stesso risultato usando lo spread-operator o Object.assign.
Ma la libreria ci da un codice più pulito.
Inauguriamo con questo articolo la sezione dedicata a Go (o Golang).
Direi che era anche ora.....
Cominciamo con un articolo semplice: come leggere un file di testo riga per riga.
Le SharedPreferences sono praticamente fondamentali nelle mobile app, in quanto ci consentono di salvare alcuni dati da riusare nell'intera app.
Ad esempio il nome utente, il token, ecc.
In questo articolo vediamo come usarle in Flutter.
FutureBuilder è un widget per Flutter che può essere molto comodo quando dobbiamo riempire dei widget con operazioni asincrone.
Ad esempio prendendo i dati da una API.
In questo articolo vediamo come usarlo.
L'url da cui reperiamo i dati è: https://www.mattepuffo.com/api/book/get.php.
Creare un'estensione per Chrome non è difficile, in quanto alla fine ci bastano le solite cose:
In questo articolo vediamo come fare; il risultato sarà un'estensione che una volta cliccata ci aprirà una finestrella con una tabella con dati presi da JSONPlaceholder.
Una delle cose più fighe di Flutter è che puoi creare una app compatibile anche con il web fin da subito.
Solo che Flutter, di default, richiede Chrome di default.
Su Linux, a volte, Chrome non viene trovato, magari perchè installato da altri repo o in altri path.
In sostanza vogliamo avvisare l'utente se ha modificato un form e poi non lo ha salvato, ma sta uscendo dalla pagina.
Tutto questo in Angular.
Se vogliamo fare un hash di stringhe e dati in Dart e Flutter possiamo usare crypto!
In questo articolo vediamo un esempio.
In questo articolo vediamo come eseguire richieste POST in Dart e Flutter.
L'esempio su un'applicazione da riga di comando, ma per Flutter le differenze sono poche.
In questo articolo vediamo due esempi di programmazione asincrona in Rust.
In entrambi i casi useremo tokio!
Anche il DOS ha i suoi comandi per visualizzare (e volendo cambiare) data e ora.
Rispetto ad altri OS (qualcuno ha detto Linux?) sia date che time hanno pochi parametri.
Per passare dati da una schermata all'altra in Flutter, abbiamo sicuramente varie possibilità.
In questo articolo vediamo come farlo usando MaterialPageRoute e pushReplacement.
In Flutter abbiamo due tipologie di animazioni:
In questo articolo vediamo un esempio delle seconde; abbiamo visto quelle esplicite in quest'altro articolo.
Supponiamo di avere un bottone che invia i dati di un form, e che vogliamo impedire che l'utente ci clicchi troppe volte in maniera consecutiva.
In Javascript abbiamo almeno due possibilità:
In questo articolo vediamo un esempio di questa "tecnica".
Ho trovato un piccolo sito che ci permette di convertire dati JSON in CSV: konklone.io/json/!
In sostanza vi basta andare sul sito e incollare il JSON.
Sotto vi apparirà una tabella con i dati e due link per il download.
L'oggetto Form in Flutter non è obbligatorio per inviare/salvare dati, ma è molto comodo in quanto ha diverse cose interessanti.
In questo articolo vediamo un esempio di form login, con una validazione basica.
Nel caso che la validazione vada a buon fine, ci limiteremo a visualizzare i dati in console.