I libri di Instant Developer Cloud

Stiamo scrivendo i libri di Instant Developer Cloud e vogliamo condividerli qui nella Community in anteprima!

Al link qui sotto trovate una cartella che ne contiene già un primo gruppo:
https://drive.google.com/drive/folders/158crxX6ejREQOWMVYZx-0B0hY6UVBDl1?usp=sharing

A breve andranno online su di una apposita pagina della Console di Instant Developer Cloud.

Ci farebbe piacere che voi li leggiate e, se volete, esprimiate un vostro parare mediante commenti e osservazioni.
Sono in formato Google Document e avete la possibilità di commentare direttamente sul documento e/o anche qui come risposte al post.

In ogni libro trovate la spiegazione del funzionamento interno di un determinato aspetto del frame work e pensiamo che possa esservi di aiuto nell’utilizzo di Instant Developer Cloud.

Ad oggi sono presenti:

  • 00-Introduzione ad Instant Developer Cloud
  • 01-Struttura di un’applicazione
  • 02-Struttura del database
  • 03-Document Orientation
  • 04-Datamap
  • Instant Developer Cloud Connector
  • Instant Developer Team Works
  • Manuale PWA

Buona lettura!

5 Mi Piace

Ma questa è un’iniziativa fantastica! Complimenti!

2 Mi Piace

Grazie @giorba, è già in scrittura quello sul componete IonicUI e il prossimo sarà quello sulla sincronizzazione!
Fino a quando vedete un nuovo manuale con il titolo che contiene IN LAVORAZIONE astenetevi dai suggerimenti.

Suggerisco di rinominare il capitolo “Struttura delle applicazioni” in “Modalità di esecuzione di un’applicazione” e come “Struttura delle applicazioni” aggiungere un altro capitolo, prima di “Modalità di esecuzione di un’applicazione”, con un contenuto tipo:

Ora che abbiamo familiarità con la composizione tipica di un progetto Instant Developer Cloud (IDC per brevità), vediamo come le applicazioni da esso prodotte sono composte.

Un’applicazione IDC è un’insieme complesso e strettamente integrato di componenti, che alleviano il compito dello sviluppatore in tutte le fasi di produzione e post-produzione, garantendo al tempo stesso efficienza, elasticità e sicurezza delle soluzioni.

Le fondamenta sono costituite da un framework (basato su ExpressJS), che orchestra ed armonizza l’intera soluzione software, facendosi carico della gestione degli eventi che occorrono all’interno ed all’esterno di una applicazione, razionalizzando la gestione sincrona ed asincrona dei flussi dati e dei path di programmazione, riducendo la quantità e la complessità del codice Javascript da scrivere.

Sul framework 5 componenti, veri e propri pilastri, si ergono a sostegno delle vostre soluzioni software:

· UI core engine
· Database ORM
· Sync engine
· Security engine
· Translation engine

l’UI engine si occupa di gestire le componenti grafiche dell’applicazione, dal rendering delle schermate alla gestione degli eventi. Non ha un proprio sistema di widget per la creazione per le interfacce ma può essere integrato con qualunque sistema esistente. Oppure potete inventarvene uno ed usarlo nei vostri progetti se vi va. IDC include già Ionic e Bootstrap, oltre alla dotazione di elementi standard dell’html, che sono in grado di soddisfare una vasta gamma di esigenze nella creazione di un’interfaccia grafica.

Il Database ORM invece, come il nome suggerisce, si occupa della gestione dei modelli di dati e della loro conservazione, uniformando l’operatività dei diversi produttori di dbms e fornendo un’astrazione in grado di occuparsi delle operazioni più comuni in maniera automatica. Grazie al modello datamap su cui è basato, consente di modellare le vostre strutture dati in maniera estremamente efficace, permettendo di non ricorrere al linguaggio SQL se non per particolari operazioni. Laddove è invece assolutamente necessario utilizzare query SQL, l’ORM viene ancora una volta in aiuto al programmatore, uniformando automaticamente le query per garantirne la corretta esecuzione su tutti i dmbs supportati, gestendo automaticamente le differenze di linguaggio tra i vari vendor. L’engine ha due “anime”, una rivolta alla manipolazione dei dati tal quali e l’altra alla loro rappresentazione all’interno dell’interfaccia grafica. Sfruttando queste due caratteristiche, è possibile creare rapidamente applicazioni di gestione dati partendo da un modello di definizione e risalendo fino all’UI che li mostra all’utente con poche, semplici operazioni.

Prima di presentare il Sync engine , è necessaria una piccola premessa. Le applicazioni sviluppate con IDC, possono essere eseguite in due modalità: online ed offline. Semplificando, la modalità online può essere paragonata ad un’applicazione web classica: l’interfaccia grafica viene generata da un server che invia le istruzioni su come disegnarla e gestirla ad un client lato utente ad esso collegato. Ogni operazione che coinvolge la manipolazione dei dati, viene inviata al server che la esegue e provvede poi alla conservazione dell’output. In questo caso, tutte le operazioni sul database non comportano particolari problemi: vengono eseguite quando l’utente connesso le richiede e non creano (di norma) ambiguità o mancate correlazioni. Naturalmente, se il client non ha accesso ad Internet, l’applicazione non può essere utilizzata.

La modalità offline di IDC invece, conserva sul client tutto quello che occorre per il funzionamento dell’app. Pensiamo ad esempio alla calcolatrice presente su uno smartphone o su un computer desktop. L’utente può utilizzarla in qualsiasi momento, che sia connesso o meno alla rete, eseguire calcoli e conservare lo storico delle operazioni sullo stesso dispositivo che ospita l’app. Un vantaggio certo, ma anche un limite in certi scenari.

Immaginiamo un’app a disposizione di un generico rivenditore che gli permetta di consultare il listino ed inviare ordini al server del suo fornitore. L’app potrebbe contenere i dati del rivenditore, il suo elenco di ordini effettuati ed il listino del fornitore, così che possa operare senza bisogno di essere connessa ad Internet in maniera permanente, ma per avere il listino prodotti aggiornato o inviare gli ordini, dovrà per forza collegarsi al server del fornitore di tanto in tanto.

In questo scenario, per raggiungere il nostro obiettivo IDC permette l’utilizzo di una strategia mista online/offline. In questo modo, quando la connessione ad Internet è disponibile, l’app può scaricare il listino aggiornato e trasmettere gli eventuali nuovi ordini, come pure aggiornare lo stato di quelli già trasmessi.

Facile a dirsi, ma come permettere e gestire queste funzionalità? Con gli strumenti di sviluppo tradizionali, occorre tenere una coda di operazioni da compiere e gestirla tenendo presente una serie di flag che segnalino le differenze tra il database nell’app e quello online, lo stato di trasferimento, della connessione alla rete e decidendo una strategia per la trasmissione dati. E se qualcosa salta, il nostro codice deve essere in grado di riprendere il trasferimento da dove si è interrotto, in maniera affidabile, e garantire che alla fine tutto quadri. Se avete mai affrontato un compito del genere, saprete già che è un vero incubo.

Il Sync engine fa tutto questo per voi; con poche semplici passaggi è in grado di mantenere le due copie di dati perfettamente sincronizzate, occupandosi anche di quali dati sono di interesse per un utente specifico e quali no. Non occorre nemmeno controllare se si è connessi o meno, ci pensa lui, in maniera completamente trasparente. Tutto quello che il programmatore deve fare è decidere quali modelli dati sincronizzare e quali informazioni sono di interesse per un utente, attivare il Sync engine e… dimenticarsene. Tutto il lavoro faticoso (e noioso) verrà eseguito in background, in maniera efficace e sicura. E come se non bastasse, tutto avviene in tempo reale: una variazione nei dati può essere immediatamente notificata al vostro codice o all’interfaccia grafica, senza alcun bisogno di azioni da parte dell’utente: niente pulsanti da premere, niente refresh, tutto in automatico (se lo volete). No, non è fantascienza, è Instant Developer Cloud!

Passiamo ora al Security engine . In alcuni scenari, è necessario che un’app si comporti in maniera diversa a seconda dell’utente che la utilizza. Alcune videate o parti di esse possono essere accessibili ad un utente e non ad un altro, oppure un menù deve presentare serie di opzioni diverse a seconda della profilazione scelta dal progettista e così via. IDC offre un sistema semplice ma estremamente efficace e sicuro per gestire automaticamente tutti questi casi. Tramite la definizione di una serie di regole, indicate secondo il formato di un file css, è poi possibile applicarle a qualsiasi elemento dell’interfaccia, lasciando che il framework faccia il resto.

Ultimo, ma non meno importante componente, è il Translation engine . Com’è facile immaginare, esso si occupa di gestire la traduzione delle interfacce in più lingue. Non è necessario pensare a priori a quali e in quante lingue dovrà essere tradotta la vostra applicazione, nè occorre utilizzare scomodi sistemi token-based: una volta che avete completato la vostra soluzione software nella vostra lingua preferita (o in qualsiasi momento del suo sviluppo) potete attivare il Translation engine e fornire le traduzioni di tutte le stringhe che è necessario tradurre, in qualsiasi lingua vogliate. E no, non è necessario andarle a recuperare attraverso l’intera applicazione, il Translation engine lo farà per voi e si preoccuperà anche di avvisarvi se una successiva modifica dell’app richiederà una traduzione. E se non volete occuparvi della traduzione, potete chiedergli di provvedere al posto vostro, grazie al suo sistema di traduzione automatica.

Tutti questi componenti, come già detto, sono integrati e gestiti dal framework, che si occupa di tutte le operazioni più noiose e meno inerenti alla logica propria di un’applicazione, lasciandovi liberi di concentrarvi sul succo del vostro business.

Il framework stesso poi è completamente integrato e gestito dall’IDE che provvede a guidarvi nella scrittura del codice in maniera semplice e naturale.

Ma c’è di più. Il framework è espandibile: se lo desiderate, potete sviluppare un vostro widget o componente di logica, integrarlo nel framework ed utilizzarlo tramite l’IDE esattamente come i componenti nativi di IDC.

Come avrete notato questa mattina i manuali già completati sono andati online sulla Console di Instant Developer Cloud.

2 Mi Piace

Da oggi è online il nuovo manuale sulla Sincronizzazione e DO remota di Instant Developer Cloud.
Lo trovate insieme agli altri sulla Console di Instant Developer Cloud.

2 Mi Piace

Da oggi è online il nuovo manuale Web API e file system di Instant Developer Cloud nella pagina della documentazione della Console!

Qualcuno pensa di leggerlo?
Ci interessa il vostro parere in merito e sono graditi commenti e suggerimenti che potete scrivere qui.

Buona lettura.

3 Mi Piace

Come già detto in modo molto sintetico nel forum (fin troppo, mi rendo conto), trovo tutto ciò che riguarda corsi/manuali/webinar… molto molto utile. Sono convinto della necessità di avere una documentazione che non sia la semplice lista delle funzioni e delle loro caratteristiche, ma che dia una visione organica di come il prodotto è stato pensato, quali tecniche sono state previste per quali contesti, etc…
Poi, come sempre, sta allo sviluppatore metabolizzare il tutto e usare lo strumento per trovare la soluzione cercata. Quello che non dovrebbe verificarsi è che lo sviluppatore sia nella situazione di dover programmare “a tentoni”, quasi alla cieca, magari reinventando l’acqua calda.
Quindi, reputo queste iniziative non solo ben venute, ma addirittura necessarie :+1:

3 Mi Piace

Sono online dei nuovi manuali di Instant Developer Cloud:
Integrazione di componenti esterni
Launcher: funzioni native e pubblicazione negli store

E a gennaio avremo anche quello sui server di produzione.

2 Mi Piace

Per @paolo.giannelli , anche se è evidente, confermo l’estrema utilità di questi documenti, ormai sono un importante punto di riferimento per me; rubando la battuta a Will Smith in un suo noto film: ottimo lavoro!

Nuovo manuale online I server di produzione.
Ora sapete cosa leggere nel week end!

3 Mi Piace

Altro manuale appena pubblicato Debugging e test.

Vediamo come imparare le tecniche di debug migliori.
Impostare i test automatici di non regressione.
Ottimizzare il codice con i test di carico.

4 Mi Piace

Ulteriore manuale pubblicato fresco fresco: Analitiche e Feedback.

Scopri come i tuoi utenti utilizzano le applicazioni e richiedi i loro suggerimenti per migliorarle

1 Mi Piace

Oggi abbiamo aggiornato anche i manuali:

  • Datamap - aggiornati diversi punti del manuale
  • IonicUI - aggiunto il capitolo per la configurazione dei ruoli e degli accessi
1 Mi Piace

Oggi abbiamo pubblicato la versione aggiornata del manuale dei Launcher con la parte di pubblicazione sugli store Google e Apple.
Leggete e dite cosa ne pensate.

E’ stato aggiunto il nuovo manuale che si occupa delle Traduzioni delle applicazioni realizzate con Instant Developer Cloud per realizzare applicazioni multilingue.
Il manuale fa riferimento alla versione 22.1 di Instant Developer Cloud.

Oggi esce la versione 22.5 di Instant Developer Cloud che contiene importanti novità sul debugger di trace nell’ide. Quindi pubblichiamo una nuova versione del manuale relativo su Console.
Debugging e test.

Nei manuali abbiamo introdotto l’indice generale in modo che sia più semplice cercare argomenti al loro interno.
In settimana li aggiorniamo tutti.

2 Mi Piace

Da oggi tutti i manuali di Instant Developer Cloud hanno l’indice generale in modo che la consultazione sia più agevole.
Ad inizio manuale ci sono tutti gli argomenti trattati e cliccando su uno di essi si raggiunge il relativo capitolo.
Spero che questa aggiunta migliori la fruizione della documentazione.

Se avete consigli sul miglioramento della documentazione non siate timidi e fatevi avanti, ogni opinione è preziosa per migliorare il processo di autoformazione su Instant Developer.

2 Mi Piace

@paolo.giannelli Finalmente sono riuscito a ritaglirmi del tempo per leggere il manuale delle Traduzioni. Ho notato, a fine di pagina 4, la seguente frase :

Al termine di questo libro verrà indicata una strategia per la traduzione delle descrizioni provenienti dal database.

Tuttavia, il documento termina con la gestione degli oggetti ionInput e ionDateTime.
È prevista, in futuro, una versione aggiuntiva del liibro che tratta il tema citato sopra?

@f.carbotti direi che ce lo siamo dimenticato questo pezzo :grinning:
Grazie della segnalazione, me lo appunto sulle cose da fare nei miglioramenti documentazione.

1 Mi Piace