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:
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.
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 👇
- 📈 Analizza Cellulari 📱
- 🔐 AI che dolor, Chat 🏴
- 🎯 Targetizza Database SQL 🗄
- 📊 Analizza Errori più comuni 📛
- 🚧 Costruisci Evergreen 📟
- 👩💻 Programma Gratis 🎉
- 💻 Configura Hosting a confronto 💑
- 🔒 Conosci Hosting reti e domini 💻
- 👩💻 Tapioca Informatica 🖥
- 💻 Iconizza Internet 💻
- 🔒 Gestisci Lavoro 🔧
- 💡 Mostra Marketing & SEO 🌪
- 🔑 Apprendi Meteo ⛅
- 🤯 Visiona Mondo Apple 🍎
- 🔍 Supervisiona Mondo Domini 🌐
- 🚀 Metti in cloud monitoraggio servizi online 📈
- 🔮 Anatomizza Nuove tecnologie 🖥
- 🔒 Antani PEC e firma digitale 📩
- 👀 Prematura Programmare 🖥
- 🎮 Lonfa Scrivere 🖋
- 🔒 Conosci Servizi di SMS 📶
- 👀 Guarda Sicurezza informatica e privacy digitale 🖥
- 🎮 Ricorda Siti web 🌎
- 🤖 Ottimizza Spiegoni artificiali 🎓
- 🧠 Neuralizza Svago 🎈
- 📡 Quantizza Usare Excel 🌀
- 🤖 Sovrascrivi Windows 😲
- 🎨 Personalizza Wireless 🚁
- 🔑 Decifra WordPress 🤵
- 💬 Il nostro canale Telegram: iscriviti
- 🟡 17 CMS gratuiti fatti in PHP, Perl e Python
- 🟢 Come scoprire se un hosting supporta suPHP
- 🟢 17 CMS gratuiti fatti in PHP, Perl e Python