Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Come salvare lo status di un’app all’interno di un URL codificato (GUIDA)

Lavorando su vari generi di app fruibili sul web (mediante sito, per intenderci, con o senza registrazione che sia) tipicamente lo sviluppatore deve fronteggiare una serie di problematiche legate allo “status” (stato) dell’utente che sta accedendo. Quelle che di solito in PHP sono dette variabili di sessione, in sostanza, racchiudono informazioni sull’utente come i dati su cui sta lavorando personalmente, ad esempio, o comunque informazioni lato client che devono essere memorizzate da qualche parte.

Tutto questo, tuttavia, comporta che sia il server a sobbarcarsi dell’incarico di memorizzare quei dati, creando così un carico di lavoro notevole, una fase di debug estremamente laboriosa nonchè potenziali problemi di privacy per l’utente (dove vengono salvati quei dati? Con quale crittografia? Cosa succede in caso di violazioni? E se un povero programmatore non volesse salvare questi dati sul server, potrebbe farlo sul serio?

URL con hashbang

Una possibile alternativa è quella di fare uso di URL univoci che siano associati ad ogni utente, un po’ come fossero un “codice fiscale”: bisognerà quindi scegliere un modo per criptare questi dati, sfruttando la notazione cosiddetta hashbang:


Cerchi un hosting economico per il tuo sito o blog? Tophost ti aspetta (clicca qui)

knotend.com/g/a#N4IgzgpgTglghgTxgLwnARgiAxA9lAVxAC5QA7X

(NB knotend.com è un servizio web, sia gratuito che a pagamento che serve a creare online diagrammi di flusso)

Tutto ciò che segue “/g/a#” non è altro che un oggetto JSON, seguendo questo approccio, che contenga al suo interno tutti i dati di lavoro dell’utente, ovvero il suo payload univoco. La possibilità in questione consiste nel prendere l’oggetto JSON, comprimerlo, codificarlo in BASE 64, per ottenere poi la stringa in questione. Il codice sarebbe pertanto su questa falsariga:

//fase 1
const stateString = JSON.stringify(appState); // appState is a json object
const compressed = compress(stateString);
const encoded = Base64.encode(compressed);

//fase 2
const decoded = Base64.decode(encoded); // same encoded as above, but read from url
const uncompressed = uncompress(decoded);
const newState = JSON.parse(uncompressed);

La cosa interessante è che si farebbe tutto in Javascript senza usare linguaggi lato server, con ovvi vantaggi di cui sopra e la possibilità di integrarlo in qualsiasi app in qualsiasi linguaggio di programmazione. Possibili algoritmi per comprimere, per inciso, sono pronti all’uso e sono open source, come ad esempio pako, che emula il classico zlib in linguaggio Javascript.

Ti potrebbe interessare:  Sedie Gaming: cosa sono e quanto costano

L’idea è buona e può ispirare una nuova generazione di applicazioni serveless a tutti gli effetti, che risparmino tempo e risorse a provider e programmatori. Ovviamente questo ha delle conseguenze che vanno valutate con attenzione: in primis bisogna capire se valga la pena farlo, se il gioco valga la candela e se l’approccio sia effettivamente scalabile.

In teoria dovrebbe esserlo, anche se giureremmo per esperienza che possa non essere così e che la codifica, in alcuni casi, possa essere difficile da rendere reversibile. Questo perchè il formato URL prodotto deve essere scalabile e riconducibile all’originale in qualsiasi momento, altrimenti è inutile; e poi perchè le varie fasi necessarie devono avvenire con grande velocità per evitare di rallentare o rendere inusabile l’app.

(ispirato liberamente a https://www.scottantipa.com/store-app-state-in-urls)

Da non perdere 👇👇👇



Questo sito web esiste da 4412 giorni (12 anni), e contiene ad oggi 3952 articoli (circa 3.161.600 parole in tutto) e 12 servizi online gratuiti. – Leggi un altro articolo a caso
5/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

Vuoi inviare SMS per la pubblicità? Prova SMSHosting (clicca qui) .


Cerchi un hosting economico per il tuo sito o blog? Tophost ti aspetta (clicca qui)

Vuoi inviare SMS per la pubblicità? Prova SMSHosting (clicca qui) .

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.