Notizie

Business insights and articles written by our team of world-class professionals

Il potere del low-code è reale o superato? Come possiamo valutarlo?

Una situazione impossibile Immaginatevi questa situazione, in un’azienda tecnologica, c’è un team che si trova davanti a un bel guaio: devono creare un’applicazione per gestire i rapporti con i clienti e hanno solo poche settimane per farlo. Sembra quasi una missione impossibile, vero? Eppure, eccoli qui, tre settimane dopo, non solo hanno finito in anticipo, ma hanno anche messo su un sistema CRM che funziona alla grande e su misura per le loro esigenze. Niente notti in bianco a scrivere codice o trucchi da maghi dell’informatica, ma solo la magia delle piattaforme low-code. Questi strumenti stanno cambiando completamente il gioco, rendendo lo sviluppo software un processo veloce, efficiente e alla portata di tutti. Impressionante, no? Ma è proprio vero? Si legge nel web che le piattaforme low-code sono strumenti di sviluppo software che permettono di creare applicazioni scrivendo poco codice tradizionale o addirittura senza scriverlo. Usando un ambiente visuale, dove gli utenti possono utilizzare interfacce drag-and-drop e modelli pre-costruiti, permettono di assemblare e configurare le funzionalità di un’app. Il focus è sulla semplificazione del processo di sviluppo, rendendolo accessibile anche a chi non ha competenze avanzate in programmazione. Si presentano particolarmente utili per lo sviluppo rapido di applicazioni aziendali, l’automazione dei processi e la creazione di soluzioni personalizzate per rispondere a esigenze specifiche del business. Grazie a queste piattaforme, aziende di ogni dimensione possono innovare a costi accettabili ed adattarsi rapidamente in un mercato in continua evoluzione. Allora avanti tutta con il low-code! O no? Cosa si intende per piattaforma low-code? Sebbene, a pelle, esista un concetto comune di low-code, non esiste una definizione univoca. Potete leggere le posizioni di alcuni brand altisonanti cliccando i loro nomi: KPMG KPMG investe molto nel low-code tanto da aver creato neòl 2021 il Low-Code Center of Excellence. Ma non sono riuscito a trovare una sua definizione di Low-code. O meglio, risponde alla domanda Cosa è il low-code con parole non sue, ma dell’azienda ServiceNow:Low-code is a refined way for companies to develop high-end applications which, according to ServiceNow, can perform up to 10 times faster compared to those developed traditionally. Sinceramente non calza con molte piattaforme low-code che conosco. In un’altra pagina parla del low-code come “one of the more disruptive technologies to hit the enterprise since the cloud. It enables you to create powerful software applications using a simple graphical interface instead of arcane programming skills.“ Gartner Con un approccio più strutturato Gartner fornisce una sua definizione sia nel suo sito Peer Insights “Gartner defines low-code application platforms (LCAPs) as application platforms that are used to rapidly develop and run custom applications by abstracting and minimizing the use of programming languages.”  Poi condivide le sue considerazioni sulla crescita del mercato del low-code, Infine rende disponibile uno dei suoi famosi Magic Quadrant, dove “Gartner defines LCAP solutions as application platforms used to rapidly develop custom applications.“. Ossia sparisce il riferimento al run. IBM e Kindryl Per IBM “Low-code is a visual approach to software development that enables faster delivery of applications through minimal hand-coding“. Nella stessa pagina, viene fatta una considerazione interessante sulle differenze tra low-code e no-code: “However, no-code products are specifically targeted for business users, allowing them to create custom apps without expert development skills and knowledge“ Mentre Kindryl, la parte dei servizi IBM che è stata raccolta in un’azienda ad-hoc, non spende energie sulla parte concettuale ma opera direttamente annunciando che Microsoft recently awarded Kyndryl with the Low Code Application Development Specialization. Oracle Oracle sul low-code ha una sua piattafomra e dice che “A Low Code stage uses a simplified interface that lets developers build applications and software that is both user-friendly and responsive“ Queste definizioni mostrano come ciascuno plasma la definizione di low-code evidenziando criteri differenti. Chi evidenzia la rapidità del processo di sviluppo, chi considera anche gli aspetti dell’ambiente di produzione, chi considera le competenze necessarie e chi si rivolge solo agli sviluppatori. Tutti però mettono alla base di tutto gli aspetti visuali e di drag-ann-drop Secondo me, le definizioni precedenti peccano perché fanno tutte riferimento ad un generico sviluppo applicativo che viene velocizzato, senza considerare i suoi molteplici aspetti. Quindi facendo credere che il low-code ha una sua capacità magica di far andare meglio qualsiasi sviluppo applicativo. Penso che questo sia il motivo principale per cui il low-code è visto con diffidenza da chi ha esperienze di sviluppo applicativo, sia come tecnico che come decision-maker. Quali sono gli elementi dello sviluppo applicativo su cui incide il low-code? Penso che non si possono valutare oggettivamente le novità introdotte dal low-code senza avere un quadro di riferimento che quello che è necessario allo sviluppo applicativo convenzionale. Per questo, se non siete avvezzi con questo mondo, nelle seguenti sezioni descrivo un modello infrastrutturale ed un modello di architettura software che uso per inquadrare le piattaforme del low-code.  Con un click sui seguenti titoli si possono vedere i modelli presi come base di partenza. Lo stack infrastrutturale – un modello Come è fatto Partiamo da una descrizione banale dello stack infrastrutturale necessario alle applicazioni. L’Hardware – È la parte fisica della tecnologia informatica. Sono i dispositivi che permetto l’esecuzione dei programmi, la connessione tra loro ed il trasferimento dei dati. Ad esempio, il nostro PC, notebook o desktop, spento o acceso è l’hardware. Il Sistema Operativo – È un software, abbastanza generico, necessario per svolgere le interazioni di base con l’hardware. Di fatto nasconde la complessità dell’hardware agli utilizzatori, siano essi umani o altri software. Nei nostri PC è Windows o MacOS per chi ha un’Apple. Il Middleware – È una categoria di software strana da definire, perché rende disponibili un insieme di funzionalità specifiche in modo generico ad un utilizzatore. Un’ ottimo esempio sui nostri PC è il software per i fogli di calcolo, sia esso EXCEL o Sheets o Numbers. Provate ad aprirlo senza fare altro, vedrete una tabella vuota senza che accada altro. Il vostro programma vi mette a disposizione tante funzionalità per gestire dei dati all’interno di tabelle, ma se non lo iniziate ad usare, a

Leggi

Come si risparmia nell’hosting di un CMS WordPress

Sia che si voglia realizzare un sito web, un negozio online o una intranet aziendale la scelta di dove realizzarlo è più importante di quanto sembri. Parliamo di WordPress perché è un CMS tra i più diffusi al mondo.   Infrastruttura proprietaria o hosting esterno? Su quale infrastrutura costruire il proprio sito è una scelta che può pesare molto sui costi finali. I vantaggi e svantaggi da pesare in modo oportuno sono diversi anche se ultimamente sono    Un’infrastruttura di proprietà Avendo un’infrastruttura di proprietà, si ha il pieno controllo su tutto l’ambiente di hosting. Le risorse del server sono completamente personalizzabili, come la capacità di storage, la potenza della CPU e la memoria. Questo permette una maggiore flessibilità e scalabilità per gestire picchi di traffico e rispondere alle esigenze in continua evoluzione del sito. D’altra parte l’infrastruttura di proprietà richiede costi iniziali significativi per acquistare hardware, infrastruttura di rete e il relativo software. Inoltre, la gestione della manutenzione e della sicurezza dell’infrastruttura, incluso l’aggiornamento dei server e la gestione dei backup sono attività di cui farsi carico. Queste richiedono competenze tecniche e un team IT dedicato per mantenere l’ambiente di hosting in esecuzione in modo efficiente e sicuro.   Un hosting gestito L’hosting gestito offre un’opzione più semplice e conveniente. Il fornitore delll’hosting gestisce l’infrastruttura, compresi i server, le risorse e le attività di manutenzione. Questo libera dal carico operativo e tecnico. Inoltre, spesso i fornitori di hosting offrono supporto tecnico dedicato per affrontare eventuali problemi. Questa scelta può avere limitazioni in termini di personalizzazione e scalabilità rispetto a un’infrastruttura di proprietà. Se sono richieste risorse specifiche o personalizzazioni particolari, ci si può scontrare con alcune limitazioni, come le versioni di PHP e le risorse ad esso dedicate. Inoltre, si può andare incontro a costi aggiuntivi a seconda dei piani e dei servizi offerti dal fornitore. È vero che sul mercato ci sono dei fornitori di hosting dedicato al wordpress a costi irrisori.  Un esempio per tutti sono i piani offerti direttamente da WordPress. Si parte da un piano, ad oggi, di 48 €/anno, ma si deve passare a 300 €/anno per avere una larghezza di banda illimitata. Ma quali sono le funzionalità importanti da valutare nel rapporto qualità/prezzo di un fornitore?   Funzionalità dell’hosting Prima di scegliere un piano di hosting è bene fare l’elenco delle funzioni che ci servono e poi costruirci il piano inserendole tutte. Si perché alcuni piani hanno un costo molto accattivante, ma alcune funzioni richiedono costi aggiuntivi. Ecco che un piano da meno di 30 €/anno arriva a costare 150 € una volta aggiunte quelle che sono funzionalità opzionali, ma in realtà richieste da un sito per una azienda.   Le funzioni indispensabili Queste sono, secondo noi le funzionalità di base da includere nell’acquisto di un piano o, comunque, quelle di cui si devono conoscere le informazioni per poter scegliere: Localizzazione dei server – è importante che il fornitore dichiari, o permetta di scegliere, dove sono fisicamente i dispositivi hadware che ospitano il wordpress. Un’altra cosa da verificare è che il fornitore preveda, anche solo nelle condizioni di vendita, il fatto che lui agisce come Responsabile del Trattamento ne vostri confronti e di quali trattamenti si fa carico (poi voi dovreste assicurarvi che questi siano inclusi nel vostro registro dei trattamenti, ma questa è materia per un altro articolo). Certificato SSL – Oggi è impensabile proporre un sito che non usi il protocollo https che permette la crittografia della trasmissione. Il certificato permette proprio questa crittografia. Backup e Restore – Avere una copia per ripristinare un sito non più utilizzabile non è una funzionalità superflua. Ma si deve considerare anche per quanto tempo la copia viene conservata. Consideriamo un backup giornaliero e, almeno, il mantenimento per due settimane. Ambiente PHP aggiornato – WordPress è costruito tutto attorno al PHP e non poter utilizzare le nuove funzioni e le migliori prestazioni delle ultime versioni è un grosso limite. Banda di rete o numero di accessi – La capacità di servire i nostri utenti è fondamentale. I fornitori che dichiarano questi numeri li garantiscono, chi etichetta le prestaioni dei propri piani con nomi tipo base, premium, ecommerce, in realtà non si prende nessun impegno. Spazio disco – Per un sito non aspettiamoci le dimensioni di un PC. Contenuti multimediali vanno compressi e, il più possibile, ospitati su sistemi diversi da WordPress. Grossi archivi di file si possono integrare da sistemi come Dropbox, Onedrive, ecc, Quindi 10GB di storage potrebbero bastare, però verifichiamo cosa ci propone il fornitore al raggiungimento del limite: dobbiamo passare ad un piano superiore o si paga a consumo? Prezzo chiaro – Sembra inutile doverlo specificare, ma spesso le tabelle dei prezzi riportano il prezzo del primo anno. Quando si rinnova il prezzo è diverso. Un’altro aspetto da considerare è legato alla nazionalità del provider e come considera l’IVA. Un fornitore non europeo dovrebbe poter verificare la partita iva (parliamo di P.IVA comunitaria) e non addebitarla. Acesso FTP, SSH e PHPMyAdmin – per quatno si cerchi di lavorare attraverso l’interfaccia web, ci sono attività che richiedono differenti tipi di accesso. Per trasferire dei file di grosse dimensioni l’FTP è più efficiente di un upload da web. L’SSH è spesso necessario per fare debug e, come ultima spiaggia, il PHPAdmin ci permetterà di  edere i dati nel DB. Una cosa importante deve esistere la possibilità di cambiare la pawword per questi accessi direttamente, senza fare richiesta al supporto. Ambiente di test – La legge d’oro “in produzione non si tocca nulla” si deve rispettare. Quindi aggiornamenti, inserimento di nuove funzionalità o semplici prove si devono fare su un ambiente differente.  Supporto tecnico – che tipo di supporto viene fornito? Per noi non è importante il mezzo, quanto il tempo di risposta. Richieste di supporto con tempi minori di un giorno lavorativo sono del tutto inutili. Meglio avere a disposizione un numero limitato di richieste, ad esempio 4 all’anno, ma con tempi rapidi. Il concetto è che, se non si hanno le competenze,

Leggi

Lean Thinking: un vecchio modo per fare le cose nuove

Il 14 Giugno a Roma si terrà, presso l’Università degli Studi di Tor Vergata, una lezione-spettacolo sul Lean Thinking. Per iscriversi andate a questo link. Ho voluto, prima di iscrivermi, fare un ripasso rapido contestualizzando l’argomento. Gli inizi Con la seconda rivoluzione industriale e dopo la fine della seconda guerra mondiale, si sono sviluppati nuovi modelli e metodi di produzione. Questo è avvenuto sia come risposta alle condizioni economiche in cui sono maturati che grazie alle intuizioni e alle culture degli uomini che li hanno ideati. Henry Ford e la catena di montaggio La produzione di automobili è iniziata in Europa dove, ad esempio, l’Opel ne inizia la costruzione nel 1899. Le auto erano fabbricate in piccole officine, con metodi artigianali ed in quantità ridotte. Quindi i costi erano alti ed il loro mercato era quello dei nobili e della ricca borghesia. Henry Ford, negli Stati Uniti, voleva produrre un’auto che fosse economica, semplice da usare e durevole. Aveva l’idea fissa di “mettere il mondo sulle ruote“. Così nel 1908 iniza a produrre l’auto Model T che, effettivamente, per quei tempi, era rapida da assemblare, facile da utilizzare e semplice da manovrare su tutte le superfici. Le sue capacità innovative lo hanno portato a perfezionarne il processo produttivo per riuscire produrne un maggior numero di auto. Nel 1913 introduce la catena di montaggio nella sua fabbrica basata sui nastri trasportatori. Il concetto di base era quello di portare il lavoro ai lavoratori piuttosto che far spostare il lavoratore intorno al veicolo. Fu un successo visto che  alla cessazione della produzione della Model T ne erano state vendute più di 20 milioni. Il modello di produzione adottato da Ford lo si può identificare di tipo PUSH che, grazie alla domanda, doveva spingere nel mercato il più alto numero di vetture possibile. https://youtu.be/cTZ3rJHHSik La Toyota e la sfida del miglioramento continuo Poco più tardi, rispetto agli USA, nasce anche in Giappone un’azienda automobilistica la Toyota. È un’azienda che ha come padrre fondatore Sakichi Toyoda, un personaggio con un animo di inventore. Sakichi brevetta una serie di telai innovativi che ottimizzao il lavoro umano che vengono prodotti dalla sua azienda laToyoda Automatic Loom Works, Ltd.  Nel 1933, il figlio Kiichirō Toyoda prende il posto del padre e apre la divisione per la produzione di automobili. Ma inizia la seconda guerra mondiale e il Governo Giapponese spinge affinché la società si specializzi nella produzione di autocarri per l’Esercito imperiale. Kiichirō quindi scorpora la divisione automobilistica e fonda la Toyota Motor Co., Ltd. Un’altro uomo di ingegno fu Taiichi Ohno, che nasce come tecnico e inizia a lavorare nel settore tessile a stretto contatto con il lavoro operativo dove inizia già ad elaborare una serie di miglioramenti organizzativi. Passato nel settore auto Taiichi non aveva poteri e non poteva prendere decisioni di competenza di altri manager. Spinto anche da spirito patriottico, inizia a far lavorare in team i suoi operai e li fa concentrare sul miglioramento dei processi operativi in modo costante. Al termine della guerra  Ohno ha presente il principale problema della Toyota: fino a che producevano i mezzi per i militari potevano imitare la produzione di massa americana ed europea, ovvero produrre gli stessi identici veicoli in massa. Ma nel dopoguerra il mercato interno giapponese non aveva una dimensione tale da assorbire una produzione PUSH di massa, c’era la mancanza di capitali e gli elevati costi di produzione, in particolare delle materie prime, non consentivano di creare, come accadeva in occidente, economie di scala che portassero ad un abbattimento dei costi unitari. Ohno aveva ben chiaro che si doveva fabbricare un veicolo diverso per ogni richiesta del mercato, trainato dalla specificità della domanda. È quello che si chiama il modello PULL, ma per realizzare questa nuova modalità occorreva migliorare radicalmente i processi, ridurre drasticamente gli sprechi, di conseguenza i tempi di attrezzaggio e dei semi lavorati in attesa. Si dovevano creare una serie di procedure capaci di garantire una perfetta sincronicità delle operazioni produttive in un flusso continuo. Fece diversi viaggi in USA per studiare il modello fordista, ma rimase negativamente stupito. In particolare da come la Ford Motor Company aveva organizzato la catena di montaggio, a suo avviso pieno di “MUDA” (sprechi). Rimase invece particolarmente colpito dal modello di una catena di negozi, i Piggly Wiggy, caratterizzati da un particolare modo di allestire un percorso obbligato lungo il quale dei prodotti posti sulle mensole potevano essere prelevati e poi pagati all’uscita. Tornato in Giappone pensò di trasporre tale principio in Toyota, regolando quindi il tasso di produzione in base all’andamento della domanda, un principio contrapposto al fordismo, caratterizzato da una produzione di massa concentrata sullo stimolo dell’offerta. Negli anni ’50 inizia un lungo percorso che porta Ohno fino alla posizione di Direttore Generale della Toyota. È il percorso che fa nascere, dalla fecondità della cultura aziendale, il famoso Toyota Production System (TPS) basato sullo Jidoka e sul Just-in-Time. Jidoka è un termine creato dalla Toyota che si pronuncia esattamente come la parola giapponese automazione (Jidōka), ma è scritto diversamente. Poiché il carattere che significa “essere umano” è stato aggiunto alla grafia standard, il suo significato è cambiato: significa automazione con intelligenza umana. Ossia dotare le macchine di un sistema che previene autonomamente gli imprevisti del loro funzionamento. Progettare le macchine usate nella produzione in modo che intervengano nel momento stesso in cui si producono difetti ad un prodotto, fermandosi e segnalandoli. Just-in-Time è stato coniato da Kiichiro Toyoda. Questo sistema prevede che ogni componente venga consegnato alla linea di montaggio esattamente nel momento in cui viene richiesto e solo nella quantità necessaria. In questo modo, si eliminano gli spazi utilizzati come magazzino e si riduce l’accumulo di materiale inutilizzato in attesa di lavorazione.  https://youtu.be/ZK6vyFz7yrM Il Lean Thinking Nel 1996, James P. Womack e Daniel T. Jones, pubblicano il libro intitolato Lean Thinking: Banish Waste and Create Wealth in Your Corporation. Non solo descrivono la nascita, i principi ed i vantaggi del modello di produzione Toyota, ma ne ipotizzanlo l’applicazione in tutti gli

Leggi

Retool e Livebase: facciamoli parlare

Le promesse del low-code: si sviluppa tutto in poco tempo È entusiasmante l’idea di una piattaforma low-code che permetta di sviluppare il software senza dover conoscere i linguaggi di programmazione. Definire con strumenti visuali i dati, la logica con cui questi devono essere trattati, e anche l’interfaccia utente, è una realtà concreta proposta da alcune piattaforme low-code. Queste piattaforme le possiamo considerare come piattaforme general-purpose che, ad un primo utilizzo, ci semplificano tutti gli aspetti dello sviluppo applicativo. È un approccio utile per applicazioni dove, la velocità dello sviluppo e la produzione dei risultati richiesti, è il requisito fondamentale. Applicazioni rivolte ad una utenza identificata e non destinata a crescere, dove i processi da automatizzare sono ben definiti e non richiedono molte modifiche nel tempo. I limiti di questo approccio generalista vengono alla luce quando ci si confronta con la necessità di scalabilità o con logiche che vengono modificate in continuazione. Che significano queste considerazioni, che il low-code non è adatto per applicazioni di tipo enterprise? No, significa che, anche usando piattaforme low-code, è importante avere la conoscenza per disegnare un’architettura applicativa. Inoltre le piattaforme devono essere concepite per aiutare questo disegno. L’alternativa è quella di scoprire i vincoli della piattaforma scelta, quando questi diventano dei limiti insormontabili alla crescita dell’applicazione già in produzione. Che si può fare in questi casi? O ci si rivolge al fornitore della piattaforma per vedere se, e a che costi, ci permette di superare questi vincoli, oppure si deve rifare tutto su una piattforma che non ponga tali limiti (aiuto! è una migrazione di un’applicazione in produzione….).   Il low-code applicato in modo specializzato Per applicazioni che hanno ambizioni di tipo enterprise è possibile abbracciare il low code utilizzando, ad esempio, delle piattaforme specializzate nella realizzazione di front-end insieme a piattaforme specializzate nella realizzazione di back-end. Questo tipo di piattaforme le possiamo considerare di tipo fit-for-purpose. Ossia piattaforme che, essendo focalizzate su un aspetto dello svulippo applicativo, garantiscono meglio anche gli attuali (o futuri) requisiti non funzionali della nostra applicazione. È chiaro che in questo caso ci sono altre valutazioni da fare. Dobbiamo rispondere queste domande: è possibile far cooperare piattaforme differenti? quanto è difficile, o meglio, quanto codice si deve scrivere, per integrarle?   L’obiettivo che ci poniamo: facciamo lavorare insieme due piattaforme In questo articolo, senza altri preamboli, vogliamo mostrare in pratica e in modo semplice come ciò è possibile.  Useremo due piattaforme. Livebase che è una piattaforma low-code, per i back-end, e si propone come una piattaforma per disegnare, generare, mettere in produzione e mantenere componenti di backend, chiamati Cloudlet, senza dover scrivere dcodice. Livebase Questa piattaforma permette di accedere tramite query GraphQL ai dati. Retool per il front-end che, nel suo sito, si presenta dicendo: Smetti di lottare con le librerie dell’interfaccia utente, integrare fra loro le origini dei dati e capire i meccanismi di accesso. Retool Retool permette di utilizzare una molteplicità di back-end, DBMS,  API, ecc. A noi interessa perché permette l’integrazione con GraphQL.   L’obiettivo che non abbiamo: la recensione delle piattaforme Non vi aspettate una doppia recensione, ci focalizziamo solo su come integrarle per mostrare quanto è semplice. Se volete saperne di più o andate sui loro siti, oppure fatecelo sapere compilando il semplice sondaggio sul low-code dal bottone in basso a destra. Proprio per questo lo scenario che esploriamo non mostra tutte le potenialità di ciascuna piattaforma, ma si limita ad un caso semplicissimo per focalizzarci sulla facilità di integrazione. Infatti, lo scenario preso ad esempio rasenta l’imbarazzante. Su Livetool abbiamo UNA tabella e vogliamo che questa venga visualizzata da Retool.   Livetool – cosa abbiamo preparato Nella parte back-end , aprendo l’applicazione Livebase Dashboard, abbiamo preparato una Cloudlet, che rappresenta il nostro back-end, dal nome RetoolCloudlet. Al centro si vedono i tre elementi necessari: i membri – qui ne abbiamo definito solo uno che sarà l’utente con cui Retool accede . il modello – nel nostro è definita una sola tabella dal nome Persone gli oggetti – sono le righe della nostra tabella In basso, nella riga di stato, si vede che la cloudlet non è attiva e, sulla destra, il bottone per avviarla. Prima di di farla partire clicchiamo il simbolo per configurare l’URL con cui accedere con le query GraphQL. Ci verrà mostrata la finestra API & Public URLs dove dobbiamo assicurarci di aver impostato ad ON l’interruttore in basso a sinistra: A questo punto possiamo avviare la cloudlet. Tornando alla finestra precedente la vedremo cambiata: In basso ora è mostrata l’URL con cui accedere alla cloudlet. Tutto quello che ci server oltre a questa URL è l’utenza e la password definite nel membro della cloudlet.   Entriamo in Retool Dopo il logon su Retool ci viene mostrato questo menù: Le scelte che ci interessano ora sono: Apps – dove definiamo la nostra applicazione Resources – dove configuriamo l’accesso ai back-end che gestiscono i dati Query Library – dove costruiamo le query sulle risorse che verranno utilizzate dalle Apps.   Definiamo Livebase, come risorsa GraphQL, su Retool Andiamo nella scelta Resources e clicchiamo il bottone Create New e scegliamo Resouces dal menù a tendina. Si vede subito che Retool ha nel suo DNA la possibilità di connettersi ad una molteplicità di risorse dati. Da quello che ci viene proposto, ovviamente, andiamo a scegliere GraphQL. Il pannello di configurazione della connessione è il primo step determinante all’integrazione delle due piattaforme. Non facciamoci fuorviare dai campi richiesti, sono solo quelli necessari a far creare un oggetto di tipo connessione a Retool. Non sono tutti quelli che servono per far funzionare la connessione. I primi due campi che vanno compilati sono: Name – è il nome della connessionenoi usiamo Livebase Demo Folder – è richiesto ed è utile per organizzare le varie connessioni usate dall’applicazione. Per lo scopo di questo articolo possiamo lasciare Unassigned.  Base URL – qui si deve inserire l’URL che ci siamo annotati dalla finestra API & Public URLs di Livebase; Authentication – scegliamo Basic Auth come metodo di autenticazione; Username/Password

Leggi

Facciamo qualcosa mentre il Server pensa

I protocolli, per dialoghi educati Protocollo, una parola nota dagli adetti ai lavori, ma oscura per gli utenti che siano  boomer o millennial o Gen Z. Per capire cosa si intende immaginatevi un incontro tra due diplomatici di alto rango. non si parleranno, tra di loro, come due amici al bar.    Ma seguiranno una serie di regole, di modi di fare e di dire, che permettano loro un dialogo aperto e senza malintesi. Bene, queste regole sono chiamate protocollo. Nello specifico sono il protocollo diplomatico. L’obiettivo è quello di stabilire un contatto, tra entità differenti  (per lingua e cultura), che permetta di effettuare una comunicazione proficua. Ossia un dialogo dove, le opinioni o le richieste, siano comunicate in modo da salvaguardarne il contenuto. Si deve prevedere, ed evitare, tutto quanto rischi di creare dei malintesi. I protocolli informatici Nella tecnologia c’è la stessa esigenza. Computer, reti, ma anche televisori, cancelli, lampadine smart, insomma tutti i dispositivi che debbano dialogare fra loro, hano bisogno di stabilire delle regole di comunicazione. Per questo si sente parlare spesso di protocollo in campo informatico. Il protocollo del web: l’HTTP I nostri browser per navigare in Internet usano principalmente il protocollo HTTP per dialogare con i server che ospitano i vari siti. Con l’HTTP si formulano la gran parte delle richieste per vedere immagini, video e testi sui nostri dispositivi, ma anche per inviare i dati di una prenotazione, di un acquisto o di un pagamento. I protocolli influenzano le prestazioni È intuitivo che un protocollo semplice o che gestisca in modo ottimizzao le richieste può influire sulla velocità di un sito. Per questo l’HTTP è spesso rivisto ed aggiornato per strizzare un occhio alle prestazioni mentre si aggiungono funzionalità e possibilità nella navigazione Internet. La prima comparsa dell’HTTP è del 1996 con la sua formalizzazione nella versione 1.0. Da allora è evoluto in continuazione per aumentare le possibilità e migliorarne le prestazioni. I siti web hanno le loro “colpe” I siti Web, nel tempo, sono diventati sempre più complicati. Non è insolito che un server che ospita un sito debba fare molti lavori prima di farci vedere una pagina o dare una risposta. Per esempio deve accedere ad un database, deve comporre la pagina con i dati ricevuti o deve inserire tutti i valori nei campi a tendina ed i bottoni in un form di prenotazione. Questo, dal nostro punto di vista dietro ad un browser, si traduce in tempo d’attesa. Una parte dell’attesa è dovuta alla velocità della rete per la trasmissione dei dati e delle informazioni, ma un’altra parte è proprio quel tempo che il server impiega per assemblare la pagina richiesta, è detto server think-time. In effetti la connessione si ferma per tutto il tempo che si prende il server e noi non possiamo far altri che aspettare. Per aumentare la velocità facciamo qualcosa mentre il server pensa: la funzione Early Hints! Nel 2017 è stato introdotto, in via sperimentale un nuovo meccanismo nel protocollo HTTP, si chiama Early Hints. In modo semplice si da al server l’opportunità di dire qualcosa mentre sta facendo le sue operazioni. Come se ci dicesse “guarda che ho quasi finito” o “io ho finito di fare questo, intato te puoi fare questo“. Da un punto di vista tecnico il server può comunicare con il nuovo Status Code 103 prima del 200 che dice “ho fatto tutto“. Il browser, sulla base della risposta, può portarsi avanti facendo altre richieste. Ad esempio (moooolto semplificato) il server potrebbe dire “guarda che sto costruendo la pagina ed ho capito quali immagini serviranno” ed il browser potrebbe decidare di iniziare a scaricare queste immagini oppure rimanere ad aspettare. Come fare per utilizzare questa nuova funzione? Da parte degli utenti L’unica azione che si può fare è quella di tenere aggiornati i nostri browser. Ma attenzione! Non tutti la supportano ancora. Guardate la tabella interattiva del sito caniuse.com. Si vede che i browser per i PC che supportano lo status 103 sono quasi tutti, tranne Safari. Mentre, spostando la tabella verso destra, si vede che per i dispositivi mobile la situazione si deve ancora evolvere. In pratica solo Chrome su Android la supporta. Se un browser non supporta ancora gli Early Hints e gli viene inviata un’intestazione di risposta 103, non succederà nulla: sarà semplicemente ignorata. Early Hints è considerata una funzione  sperimentale in Chrome e beta di Cloudflare. Ciò significa che il comportamento della funzione potrebbe cambiare in futuro. Da parte degli sviluppatori web Qui le strade sono differenti e la scelta su quale intrprendere si basa sul tempo, le possibilità e le conoscenze a disposizione. Sul mio server Attivare Early Hints direttamente sul server che ospita in nostro sito richiede una conoscenza sistemistica del tipo di web server usato. Ad esempio per Apache  si deve prima attivare la fuzionalità e poi configurare quelle risorse che possono essere oggetto dello stato 103. Non è una cosa banale e nel tempo è complessa da gestire. Sul CDN Se già usate un servizio di CDN (content Delivery Network) molto probabilmente vi basterà configurarlo per il vostro sito. Ad esempio se usate CloudFare basta uno switch: Sul fornitore di Hosting Qui dipende dalla qualità del piano di hosting del vostro sito. Alcuni non hanno questa possibilità. Permettono molte cose con pannelli tipo cPanel, ispConfig,  ecc. ma non sempre così specifiche. Altri, come Kinsta, hanno questa funzionalità inclusa in ogni piano. Per abilitare Early Hints, basta accedere nel pannello MyKinsta e, alla voce Early Hints, cliccare sul pulsante Abilita.

Leggi

ChatBot – L’intelligenza Artificiale Alla Portata Di Tutti

Cosa è? L’intelligenza artificiale (IA) è un ramo dell’informatica che si occupa di creare macchine e sistemi in grado di eseguire attività che richiedono intelligenza umana, come la comprensione del linguaggio naturale, la visione, il ragionamento, l’apprendimento e la risoluzione di problemi. In altre parole, l’obiettivo dell’IA è quello di creare software e sistemi hardware che possano emulare le capacità cognitive degli esseri umani, consentendo loro di svolgere compiti che in passato erano riservati solo all’uomo. L’intelligenza artificiale si basa su una serie di tecniche e algoritmi, tra cui il machine learning, la visione artificiale, il processamento del linguaggio naturale, la robotica e l’elaborazione del segnale. Ogni tecnica ha il suo insieme di metodi e tecnologie, ma tutti condividono l’obiettivo comune di creare sistemi che possano imparare, adattarsi e migliorare continuamente le loro prestazioni senza l’intervento umano. L’IA viene utilizzata in una vasta gamma di applicazioni, tra cui la ricerca scientifica, l’automazione industriale, la sicurezza informatica, la medicina, la finanza, il marketing e molti altri settori. Inoltre, l’IA sta diventando sempre più presente nella vita quotidiana delle persone, grazie all’integrazione di assistenti vocali, chatbot, automobili autonome e molte altre applicazioni. L’obiettivo a lungo termine dell’IA è quello di creare sistemi che siano in grado di raggiungere un’intelligenza generale, cioè di avere la capacità di apprendere e risolvere problemi in modo simile a quello umano, e di essere in grado di operare in modo autonomo senza supervisione umana. Tuttavia, il raggiungimento di questo obiettivo richiederà ancora molti anni di ricerca e sviluppo tecnologico.   ChatGPT ChatGPT è uno strumento progettato per rispondere alle domande e fornire informazioni su una vasta gamma di argomenti. Progettato da OpenAI utilizzando il linguaggio GPT-3.5.  È composto da una vasta rete neurale artificiale che utilizza algoritmi di deep learning per elaborare i dati e generare risposte a diverse domande. La sua architettura consente di comprendere e generare testo naturale, imparare da nuove informazioni e migliorare continuamente le sue capacità di comunicare con gli utenti. Come tutte le tecnologie di Intelligenza Artificiale ha avuto un periodo di apprendimento. È stato addestrato su un enorme corpus di testo proveniente da diverse fonti di Internet.  Ma lo può usare chiunque? In questo momento è disponibile sia gratuitamente che a pagamento. La versione a pagamento costa 20$/mese e, rispetto alla versioner gratuita, garantisce il funzionamento anche nei momenti di maggior carico, l’accesso in anteprima alle nuove funzionalità e le domande degli utenti a pagamento hanno priorità su quelle degli utenti gratuiti. Per usarlo gratuitamente basta andare qui e registrarsi. Al primo accesso verrà mostrata questa schermata: Al centro in basso c’è il campo dove si possono inserire le domande. Non c’è altro da sapere, basta parlarci. Man mano che si usa, sulla sinistra nella sezione nera, vengono elencate le sessioni che abbiamo fatto e volendo si possono riprendere. La mia esperienza a caldo Ho iniziato a fare delle domande specifiche in italiano, ma il dialogo sembrava più una interrogazione. Come se fosse uno studente di cui valutare la conoscenza. In questa modalità colpisce subito la capacità di capire la domanda, la velocità e la proprietà di linguaggio con cui fornisce la risposta È ancora più stupefacente se chi fa le domande si rivolge in modo più naturale. Dubitando delle risposte, dicendo che la risposta non è quello che si voleva, chiedendo consigli, insomma instaurando un dialogo. Qui si vede al massimo la sua naturalezza di linguaggio. Guardate come interagisce dubitando della sua risposta.   Mi è piaciuto: La naturalezza del dialogo La rapidità La capacità di sintetizzare informazioni esistenti   Non mi è piaciuto: La vaghezza di alcune risposte dove è necessaria una forte capacità di sintesi il parafrasare la stessa risposta quando si chiedono dettagli

Leggi

Ri-Partiamo dalle basi: Circuiti booleani

Perché questo articolo Chi ha studiato come informatico, o si sente tale, sa bene cosa sono gli AND, OR e NOT, che tutto gira attorno a 0 e 1. Ma sono concetti che, i vari livelli di astrazione introdotti dai sistemi operativi prima e dai virtualizzatori e container dopo, restano lontani dalle attività quotidiane. Peró siamo nei pressi di una rivoluzione epocale, avviata con i computer quantici, che spiazzerà molti di noi. Per essere protagonisti in questa rivoluzione si dovrà tornare a capire le basi del nuovo mondo, ma per capirne le basi si dovranno avere solide le basi del vecchio. Questa riflessione l’ho fatta nel cercare di rispondere ad una domanda che mi è stata posta: un qbit a quanti bit corrisponde? La risposta è: per rappresentare n bit servono n qbit, ma per rappresentare n qbit può servire un numero infinito (o enorme) di bit. È un concetto semplice da enunciare, ma difficile da capire, si rischia di farne un dogma. Quindi, prima di avventurarmi in disparate spiegazioni, ho pensato di rivedere le basi e mettere nero su bianco in questo articolo alcuni concetti del vecchio mondo relativi ai circuiti booleani. Giusto per porre le basi e dare un riferimento a chi vuole avventurarsi nel nuovo mondo. Infatti per lo studio dei computer quantici i circuiti booleani sono di gran lunga il modello più semplice per fare delle generalizzazioni in quanto sono il modello più vicino alla realtà fisica dei computer. Ma attenzione daró per assodati i concetti ed i formalismi dell’ algebra booleana. Non riparto del tutto da zero. Le porte logiche necessarie (gate) Tutti sanno che qualsiasi elaborazione si voglia fare é possibile con dei circuiti di tipo OR, AND e NOT. Questi circuiti sono dell porte logiche nel senso che applicano ai valori di ingresso le funzioni relative per fornire un risultato in uscita. In inglese, e nel resto del testo, queste porte vengono chiamate gate (cancelli). Notiamo che tutte hanno 2 valori di ingresso ed 1 di uscita, tranne il NOT. Definizione 1 Qualsiasi funzione Booleana f : {0, 1}n → {0, 1}m è calcolabile tramite un circuito Booleano C usando solo gate di tipo AND, OR, e  NOT. Per questo tali gate sono considerati universali. Ma é interessante (ed utile) analizzare come tale circuito C potrebbe non essere univoco. Quindi il problema che si pone é quello di trovare un circuito C il piú efficiente possibile, dove per efficiente si intende un circuito il più piccolo possibile. Piccolo non per le dimensioni ma per il numero ed il tipo di gate che utilizza. Infatti tale numero influenza direttamente il tempo impiegato per il calcolo della funzione nella macchina di Touring (il modello generico di macchina ad operazioni sequenziali alla base dei computer attuali). Consideriamo un circuito per realizzare la funzione XOR Ovviamente è realizzato con gate universali, ma è immediato fare altre due osservazioni: Oltre ai gate ci sono altri elementi costituiti dalle linee che li collegano come dei fili. Si chiamano, appunto, wires. Nel diagramma si usa una convenzione per cui, ai due ingressi, i wires si possono dividere ed inviare il segnale a due gate diversi. Nella realtà deve esistere un meccanismo che permetta una tale suddivisione del dato di input e conviene renderlo esplicito nei modelli dei circuiti. Quindi si considera un nuovo tipo di gate chiamato DUPE (duplicate) che ha come input un bit e come output fornisce due copie identiche dell’input. Con questa precisazione il circuito diventa: Dopo queste considerazioni si rivede la precedente definizione, per cui: Definizione 1a I gates universali sono quelli di tipo AND, OR, NOT e DUPE. In realtà si può ridurre questo insieme di gates perché sia AND, OR e NOT possono essere tutti sostituiti con dei NAND. Rcordiamo che: Con la regola di De Morgan possiamo sostituire gli OR con NAND e NOT: Poi si possono eliminare gli AND poiché: Quindi l’OR diventa: Siamo arrivati a poter utilizzare sologate di tipo NAND e NOT per realizzare qualsiasi circuito. Se consideriamo l’uso del NAND nel modo seguente:si vede come, forzando ad 1 uno dei due ingressi del NAND possiamo simulare un gate NOT. La particolarità è nel ingresso forzato ad 1 che viene chiamato ancilla bit, ossia un bit costante che facilita la realizzazione di un obiettivo specifico. a questo punto possiamo rivedere la Definizione 1a: Definizione 1b I gates universali sono quelli di tipo NAND, e DUPE utilizzando gli ancilla bit. Conclusioni Possiamo vedere che qualsiasi circuito C può essere convertito in un circuito C’ che realizza la stessa funzione e questa conversione può essere effettuata in modo efficiente riducendo il tipo di gate necessari. Da un punto di vista pratico nella realizzazione dei processori, significa che possiamo vederli come un insieme di gate tutti uguali che, connessi in modo differente possono realizzare tutte le funzionalità necessarie. Ciò è possibile perché, come abbiamo visto, esiste un gate universale con cui possiamo realizzare qualsiasi cosa. Rimane in sospeso un aspetto che pochi prendono in considerazione. Le operazioni effettuate da questi circuiti sono quasi sempre irreversibili. Ossia dato un input di segnali x1, x2, … xn il circuito calcola un output y, ma dato il valore y di tale output non è possibile risalire ai vari xi che lo hasnno prodotto. In pratica solo il NOT è un gate che permette questo. Ma della reversibilità computazionale ne parleremo in un altro articolo.

Leggi

Certificazione CASPIO

No-code e low-code sono le parole che sentiremo sempre più spesso nei prossimi anni. Ne abbiamo scritto, a Marzo, nell’articolo Una nuova frontiera della programmazione. Le parole contano, ma dopo servono i fatti, quindi in questi mesi abbiamo sperimentato alcune di queste piattaforme e le abbiamo già utilizzate per noi, nel migliorare alcuni nostri servizi, e per alcune soluzioni portate ai nostri clienti. Invece oggi per la prima volta abbiamo una certificazione, presonale, su una di queste piattaforme: Caspio. È la prova concreta di come perseguiamo la nostra missione: cercare ed informarci sulle tecnologie emergenti, provarle e coniugarle sulle esigenze dei nostri clienti. Quindi da oggi , in basso nella home del sito si aggiunge un nuovo simbolo.

Leggi

ready to take your business to the next level?

Get in touch today and receive a complimentary consultation.