Home
Titolo: Appunti dal 4D Summit - giorno 15/10/2011 - Wakanday
Ultimo Aggiornamento: 02/11/11 11:28:42
Inizio conferenza (15/10/11)
• Wakanda
inizia Al Hilwa della IDC, la battaglia per gli ambienti di sviluppo• nuovi business model, strumenti free: più utenti che sviluppatori, più device che utenti
• linguaggi su virtual machine bene sui server, meno accettati sui client per problemi di performance e gestione di memoria, il compilato/nativo è ancora preferito
• i framework hanno cambiato tutto
• c'è la crescita dello Scripting, figlio del RAD
• nella storia del computing, c'è stata un'alternarsi fra preminenza dei client e dei server, molto illuminante la grafica
• trasformazione delle app, più touch, web, social, sempre più mobile, app più piccole e specializzate, nuove modalità di monetizzazione
• lato backend, piattaforme cloud, virtualizzazione, elasticità, procedure di disaster recovery
• strumenti di sviluppo, ancora non pronti per il cloud, solo ALM cioè browse testing, version control, bug tracking
• c/c++ per ios, java per android, .net per Windows Phone, web per il resto.. strumenti free e marketplace per gli sviluppatori
• dopo il medioevo della guerra fra i browser prima del 1999, mostra la timeline della realizzazione degli standard, con previsione fino a 2013 (90% browsing mobile) e poi al 2015 (90% browsing desktop)
• la parte dei plugin (tipo flash) è sempre meno, dovrebbe morire intorno al 2015
• sondaggio in US, gli sviluppatori lavorano al 58% in aziende con meno di 5000 dipendenti, 54 % speso del tempo sul frontend, il 41% ha iniziato a lavorare sul mobile quest'anno
• web: sono fedeli ad un sistema di sviluppo il 50% dei programmatori RPG; COBOL, etc mentre l'87% dei programmatori web ne usa di più
html5 per app Business : parla Philippe le Hegaret, responsabile del W3C• html5, scrivi un programma che gira su più piattaforme, html5 potente, graficamente avanzato, modulare
• html5, tecnologie CSS, HTML, WOFF (font), Web Sockets, Javascript, SVG, WebGL, offline access (accesso a db locali, ... ) device access (geolocaliizzazione, orientamento...)
• html5 standard completo nel 2014, prima test suite in 2012, diversi moduli come css3 sono già finali
• html5 : 2 miliardi di browser mobile per il 2016, adottato dai migliori browser ie9+, ff4+, safari5+, chrome 10+, opera 11+, blackberry browser
• html5 nuovi tipi nelle form (ad es input type = 'email', 'date', 'time', etc) e controlli di validità, come anche la chiave 'required'
• html5 mostra nuove funzionalità in css3, font, etc
• html5, demo del monitoring e del timing, la preentazione la potete trovare anche su questo indirizzo:
HTML5 for Business Apps
http://www.w3.org/2011/Talks/1015-wakanday/
Douglas Crockford, javascript il linguaggio più incompreso del mondo• javascript: usato sempre da più persone, dallo scienziato a quello che copia e incolla e tutti quelli nel mezzo
• javascript: fa la storia di js, dalla nascita in netscape, ai linguaggi da cui ha preso la sintassi "scheme" o "self... javascript o jscript, due linguaggi? no uno con due nomi stupidi, non c'entra niente con java
• javascript: in netscape si vergognavano di javascript, oggi è un linguaggio più potente di java
• javascript: va nel tecnico, parla della tecnica del Closure come la migliore idea nella storia della programmazione ..
Code Conventions for the JavaScript Programming Language
http://javascript.crockford.com/code.html
This is a set of coding conventions and rules for use in JavaScript
programming. It is inspired by the Sun document Code Conventions
for the Java Programming Language. It is heavily modified of course
because JavaScript is not Java.
• definisce un sottoinsieme professionale, verifica il codice..
JSLint,The JavaScript Code Quality Tool
http://www.jslint.com/
Copyright 2002 Douglas Crockford. All Rights Reserved Wrrrldwide and
Beyond!Code Conventions for the JavaScript Programming Language.Join
the JSLint Group.
• parla di JSON, rfc 4627 "application/json"
• json: senza numero di versione perché non sarà mai cambiato, al limite un giorno sarà sostituito
• json: testuale, minimo, un sottoinsieme di javascript
• json: numeri, stringhe, booleani, oggetti, array
• js: conclusioni: programmare è complicato, non bisogna prenderlo sottogamba, bisogna imparare il linguaggio
parla Dave Terry della PDM, 26 anni di esperienza, ha scritto il manuale di Wakanda Server Side concepthttp://www.wakanda.org/
The second Developer Preview release of Wakanda is now available, as
announced at the Wakanday conference in Boston, Massachusetts.
• ambiente di sviluppo crossplatform per applicazioni web basate su dati, produce applicazioni html+css+javascript, senza plugin
• un Server, un framework, uno Studio
• il framework JS è incluso nelle pagine e porta su browser il data model comunicando con il Wakanda Server
• il wakanda Studio dove progetti le app, vedremo solo questo e il browser
• il server è Mac/Windows/Linux, web/rest/data server, very fast e threaded
• demo dello Studio
• grid con un milione di record, un drag and drop e funziona subito sul browser, pui scorrere dal primo all'ultimo senza tempi di attesa
• stesso scroll fra 1 milione di record con in più un immagine per record
• aggiunge un pulsante, lo chiama Subset e nel codice scrive $$('dataGrid0').reduceToSelected($1)
• al volo 76300 record nella selezione, istantaneo, no tempi di attesa
• demo di relazione a se stesso, usando il campo Father legato alla stessa classe Persona
• esempio di codice ds.Person.query('father.father.fullName = "Jesse Tagata" '); (BTW lanciato istantaneamente in console per vedere il risultato al volo)
• scroll di record con il campo nome e il campo nome del father, scroll sempre istantaneo..
• stessa lista aggiunge il padre del padre, il padre del padre del padre .. scroll sempre istantaneo con quattro generazioni per riga
• demo di navigazione nella lista con pulsanti automatici di next prev , form di dettaglio e save al volo.. sempre su 1.000.000 di record tutta disegnata al volo
• esempio di evento javascript onAttrobutedChange, una riga per cambiare il colore in funzione del contenuto del campo
• demo dell'oggetto Matrix, che può contenere molti container e l disone in automatico in funzione della dimensione...
• il sorgente del framework è adesso disponibile su github
Wakanda's Profile - GitHub
https://www.github.com/Wakanda
Wakanda Lato Server
• Server: la solution contiene più progetti, il progetto contiene un datastore model
• Server: la datastore class è l'equivalente di una tabella
• Server: Entity è l'unità logica di informazioni, simile al record
• Server: l'Entity collection è un termine per indicare un gruppo di entity della stessa classe
• Server: demo pratica, fa vedere un progetto e il suo datastore model
• Server: dentro l'Entity definisci:
- gli attributi di tipo storage, campi classici di una tabella
- gli attributi di tipo calcolato, risultato di una espressione che si inserisce in javascript e che sarà eseguito sul server, su diversi eventi possibili:
- - onGet (se leggi questo campo il risultato è ...,
- - onSet (se scrivi in questo campo allora succede ...),
- - onQuery (se cerchi per questo campo ritorna ad es, 'nome= or cognome ='
- - onSort (per fargli ritornare una stringa diversa se ascendente o discendente)
• Server: dentro l'Entity definisci anche:
- gli attributi di tipo relationship, diventa un campo in tutte e due le tabelle (ad esempio "datore di lavoro" nella tabella Persona, è connesso al campo "Impiegati" nella tabella Company).
Questo è più difficile da scrivere che da guardare, l'operazione è immediata nel wakanda studio, ed esteticamente molto chiara
• Server: le relazioni possono fare riferimenti a campi anche di entità non collegate direttamente, ma a n livelli di relazione distanti (tipo in Company l'attributo allProgetti.Impiegati)
• Server: estendere un'entità, esempio partendo da una tabella di Scelte ne ricava tre tabelle: una tipoPersona, poi Città e Stato.. poi scrive this.category = this.getDataClass.getName () : se scrivi nella tabella città la categoria è città, ma tutti i dati stanno nella prima tabella
• Server: quindi l'entità base è Persona, mentre è estesa nelle tabelle Studente o Insegnante e in entrambi i casi gli attributi aggiuntivi sono diversi
• Server: scope degli attributi public, public on server (non ci accedi dal client), protected (accesso solo dalla sua classe) e private.
Wakanda Lato Client
• Client: il datasource è un oggetto che sta fra i dati e i widget (gli oggetti a video tipo la data grid)
• Client: i relation datasource sono collegati "binded" alla datasource.. nota: ancora è difficile scrivere cose che a video sono semplici da capire e veloci da usare..
• Client: i datasource mantengono automaticamente lo stato dei dati, cliccando su una grid si aggiornano le grid di datasource in relazione e i campi qua e là trascinati dalla stessa data source
• Client: un widget può avere una datasource in e una out (tipo le combobox)
• Client: crea una datassource array per usarla come sorgente, riempita all'onLoad del documento, gli elementi sono del tipo {"chiave: "valore"}
• Client: demo di alcuni effetti grafici legati ad eventi, tipo onOver passando su un pulsante: facile facile
• Client: demo di altri widget sugli stessi datasource, radio button, slider, campi testo.. molti effetti grafici e utili, tutto fatto con pochi click e qualche volta 1 riga di codice...
• Client: demo della matrix, l'oggetto dentro viene replicato a dx e in basso a riempire il riquadro e quando scorri fra i record la matrice scorre a mostrare l'oggetto corrispondente...
• Client: demo di un container, con un button in basso a dx, mostra il posizionamento automatico ridimensionando la finestra
• Client: splitta il container in tre parti, ridimensionati automaticamente spostando i divisori dopo aver impostato le proprietà con pochi clic
Inviato da: Umberto Migliore