Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Pubblicità



4d logo

Home

Titolo: Appunti dal 4D Summit - giorno 14/10/2011

Ultimo Aggiornamento: 31/10/11 08:47:48

Inizio conferenza (14/10/11)
• 4D in the cloud
• 4D e Wakanda
• Webkit
• Replication
• Questions and answers


4D in the cloud
• si va sulla nuvola per scalabilità (a lungo termine), elasticità (per affrontare picchi di utilizzo)
• 4D dalla v11 ha cambiato il modo di gestire i processi globali introducendo i processi multithreaded per i dati, in v12 i processi sul server possono andare in timeout e ripristinati in automatico, per ridurre il carico del server
• 4D v13 non avrà più il processo 'gemello' sul server finché il client non fa una richiesta ai dati
• 4D demo confrontando v12 e v13: sul server non sono più creati gli stessi processi di prima (zero se il client non fa richieste di dati, uno solo quando le fa contro i due processi sempre attivi prima)
• sia i processi cooperative che quelli preemotive sulla v13 sono creati solo se servono
• usare il client (4D Remote) come Web Server è una caratteristica già disponibile per avere più web server e un solo data server e tenere separato, sulla nuvola, solo il client e non direttamente il server
• per andare sulla nuvola il consiglio è di essere più statico possibile
• demo usando Amazon EC2 region, un server 64bit e 1000 client 4D Remote come 1000 web server. L'accesso è gestito dall'Elastica Load Balancer (ELB) di Amazon: per le pagine statiche non c'è uso del server, ma solo per le chiamate dinamiche
• Amazon fornisce una tecnica per cui con il cookie passa le chiamate sempre allo stesso web server anche in load balancing (sticky cookies)
• su Amazon (e sugli altri cloud provider) le istanze remote di 4D Remote possono essere create automaticamente a necessità
• le sfide di 4d sono state di passare da 68k, a ppc, windows, dal pascal è stato riscritto in c++, etc
• 4d è stato il primo db client-server, è passato su Mac OS X cambiando in Carbon
• hanno riscritto tutto a 64 bit, ma purtroppo oggi carbon non permette il 64bit, bisognerà riscrivere ancora 4d per avere il 64 bit su Mac
• la struttura di 4d è basata su un CoreRuntime uguale per 4d, 4d Server e 4d Volume Desktop, su questa sono implementati componenti come il datastore, http server, sql server, code editor, structure editor
• poi c'è una xbox con grafica, net, gui e infine un layer opensource con icu, xerces, webkit, openssl, javascriptcore (alcune parti sono state sviluppate per wakanda e incluse)

4d e Wakanda
• wakanda studio condivide una struttura simile con molti componenti uguali
• senza GUI da decarbonizzare wakanda server è 64 bit su Windows, Mac e Linux
• wakanda server ha solo il primo livello di componenti, manca del componente Xbox GUI, ha dei componenti aggiuntivi ad esempio per la gestione dei file
• 4d ha sempre modernizzato il codice e molto lavoro che è stato fatto non è sempre visibile, ma emerge alla fine
• in 4d bisogna dare un nome alle relazioni
• demo di debugger del javascript sul server per vedere la procedura di accesso ad un database di 4d
• se la relazione ha un nome si può usare nella sintassi del javascript nomeCliente = fatture.linkACliente.clienteNome
• puoi importare dati in wakanda leggendo un db di 4d con open4DBase
• fa vedere una scheda modificata su 4d e dopo qualche secondo .. è subito disponibile sul sito fatto con wakanda
• 4d Germany usa wakanda per il proprio customer support
• usando la Rich Text area il testo è già pronto per il web, e i due database si sincronizzano ogni 60 secondi
• per la sincronizzazione sua il tag /4dsync incluso a partire dalla versione v12, per scambio dati via xml o json
• non serve scrivere nessuna riga di codice su 4d per la sincronizzazione, è gestita in automatico con timestamp, record modificati, etc
• l'unica limitazione è che l'accesso con questo comando non può essere simultaneo da 4d e wakanda, server solo per import/export
• Thomas Maul ha implementato la procedura di sincronizzazione in due giorni e si dichiara un javascript novice
• puoi rimandare i dati a 4d sempre via json sempre con lo stesso tag

Josh Fletcher
• le "features request" diventano "feature implementate", suggerisce di usare il form della richiesta di feature
Forum "Feature Request" su forums.4d.fr

Webkit
• web area peremette interfaccia crossplatform uniiforme, HTML5 e CSS3 dentro 4D app
• Dynamic Layout e Standardized Web Content con Angelo Caporese di 4D Hispano
• parla dei vantaggi dell'html5 rispetto al vecchio html4 vecchio di 14 anni, migliore gestine degli elementi grafici, comandi più moderni per le nuove applicazioni web
• 2 concetti: dati dinamici con i tag e scambio comunicazione con la webarea usando l'URL filtering
• html5 : api per la geolocalizzazione, device-aware, accesso all'hardwrae per audio/video input
• html5 : nuovi tag header, section, article, footer
• includendo webkit compilato sia per mac che per windows all'interno di 4d possiamo avere un'interfaccia moderna che supporta funzionalità di html 5 e css3 in modo migliore di qualsiasi browser
• css3 : nuove funzionalità, per una grafica più moderna
• lo standard HTML5 non è ancora definito continua ad evolvere... è un "living standard"
• altra demo con lista gerarchica a sinistra e area con mappa a destra, l'effetto è abbastanza bello e fluido, sempre dentro una form di 4d
• basta usare il comando WA SET URL FILTERS e poi scrivere nell'evento "On URL Filtering", usando ill comando "WA Get last Filtered URL"
• nota: con la v12 usa OBJECT Get pointer(Object current) invece di Self
• scrivendo in html <a href="m4d:dettagliUfficio:21">Boston </a> si rientra nella procedura che filtra gli url della webarea
• la sola barra sta in una webarea, gli elementi della toolbar sono generati con un 4DLOOP, alcune modifiche sono eseguite con comandi javascript molto semplici
• esempio di uso del tag canvas per colorare l'area di un paese all'interno di una mappa geografica (penso che l'oggetto sia quello del link sotto)
Canvas World Map - Ajaxian
http://www.ajaxian.com/archives/canvas-world-map
You can tweak the color combinations and highlight areas, but no
clicking and moving around just yet. Here are some of Jon’s
thoughts:
il consiglio è di guardare framework già esistenti e non scriversi tutto da zero in javascript, ci sono soluzioni già pronte da integrare ed esteticamente molto avanzate
• attiva il filtro per gli url che iniziano con una stringa particolare, ad esempio "m4d:@"
• demo della replica di una toolbar (del precedente sito 4d) all'interno di una form
• su webkit ci sono integrate funzioni molto interessanti, come ad esempio l'effetto di movimento fatto con una transitino
• esempio di coverflow, esteticamente molto gradevole sempre dentro una form di 4d, scorrendo delle immagini sopra si aggiorna la parte inferiore della form, molto veloce e fluida

Replication
• parla Sergiy Temnikov, Team Leader SQL Development Group, 4D SAS
• il timestamp garantisce che ogni successiva modifica ha un numero più alto
• master -slave: il data pull quando il client chiede il dato al master, sincronizzazione quando le due fonti dati sono master e il dato è inviato da uno all'altro: sono in pratica 2 replication nelle due direzioni
• ogni modifica ai record è loggata, basata su una chiave primaria e su un timestamp
• sintassi:
REPLICATE field1, field2 FROM tablea
FOR REMOTE STAMP :miaVar4D1
LOCAL STAMP :miaVar4D2
LATEST REMOTE STAMP :miaVar4D3
INTO tableb (field3, field4)
in local stamp puoi mettere un timestamp locale oltre il quale accetti la replica
• puoi filtrare aggiungendo un WHERE applicato ai dati remoti
• bisogna attivare nella struttura il flag Enable Replication per ogni tabella, e identificare la chiave Primaria
• molto pericoloso lasciare delle condizioni nella replica, per cui il WHERE è da scrivere con attenzione
• da codice si può scrivere ALTER TABLE x ENABLE REPLICATION (ed eventualmente anche DISABLE)
• LIMIT e OFFSET per tagliare il numero di modifiche importate e per costruire un ciclo (limito a 50 per volta, poi devo partire dal 50+1 esimo per ogni volta del ciclo)
• diversi tipi di modifica, tutte loggate, : Modifica (nuovo o aggiornamento), Cancellazione
• due file di log, esterni al datafile
• sintassi:
REPLICATE field1, field2 FROM tablea
FOR REMOTE STAMP :miaVar4D1
LOCAL STAMP :miaVar4D2
LATEST REMOTE STAMP :miaVar4D3
INTO tableb (field3, field4)
se abbiamo un conflitto per un record modificato in entrambi i server
• il log delle modifiche è cancellato quando si disabilita la replica.. non tiene la storia
• virtual fields, accessibili solo da SQL : __ROW_ID internal id del record, può essere usato nei comandi SQL (ma non Replicate)
• special stamps : -1 replica tutti i record present nella tabella sorgente
• in SQL, perché la replica richiede molti parametri, è possibile essere verbosi, dettagliati, in modo che i comandi siano più facile da capire
• sintassi: REPLICATE field1, field2 FROM tablea FOR REMOTE STAMP :miaVar4D1 LATEST REMOTE STAMP :miaVar4D3 INTO tableb (field3, field4)
bisogna conservare la latest per ripartire da quella la prossima volta
• la sintassi inizia con REPLICATE field1, field2 FROM tablea INTO tableb (field3, field4)
• sintassi:
REPLICATE field1, field2 FROM tablea
FOR REMOTE STAMP :miaVar4D1
LOCAL STAMP :miaVar4D2
REMOTE OVER LOCAL / LOCAL OVER REMOTE
LATEST REMOTE STAMP :miaVar4D3
LATEST REMOTE STAMP :miaVar4D4
INTO tableb (field3, field4)
Puoi decidere chi vince di volta in volta, per campi diversi o tabelle diverse o situazioni diverse
• /4DSYNC/$catalog per avere l'elenco delle tabelle, /4DSYNC/$catalog/tabella per l'elenco dei campi
• /4DSYNC/tabella/campo1,campo2?$stamp=1&$format=json
• virtual fields, accessibili solo da SQL : __ROW_STAMP usabile in sql, __ROW_ACTION (1 = modificato, 2 = deleted) usabile solo con REPLICATE
• integrità dei dati è disabilitata (verifica dell'esistenza dei record in relazione, il null o l'unique), anche i Trigger sono disabilitati. Può servire fare i controlli successivamente
• special stamps : -2 tutti i record della tabella sorgente sono cancellati
• via HTTP usando /4DSYNC
• il risultato che risponde 4d è un json molto chiaro da leggere, compreso di LatestStamp e stamp & azione per ogni record

4D in the cloud (2)
• come usare 4d remote sulla cloud di Amazon come web server
• scegliere bene il partner, amazon è ad esempio preferibile ad ibm perché il loro business è interamente su internet
• difficile scegliere il partner perché i costi e le caratteristiche non sono facili da confrontare, alcuni siti provano a raccogliere informazioni
• Cloud Price Calculator.
http://www.cloudpricecalculator.com/
This tool allows you to calculate a normalized score for cloud
computing offers
• ad esempio un piccolo server su windows 1,7GB di memoria può essere 1050 dollari anno con "on demand instance" o 555 dollari con "reserved istances" presa per 3 anni
• durante un periodo di picco si possono aggiungere piccole istanza a $0,12 all'ora
• oltre ad Amazon, un altro buon provider è RackSpace
Cloud Computing, Managed Hosting, Dedicated Server Hosting by Rackspace
http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/
More than 100,000 businesses trust Rackspace with their hosting and
cloud computing. Get cloud, managed and hybrid hosting all backed by
Fanatical Support®
• con la v13 l'utente è riportato allo stesso 4d Remote, se no si può gestire la cosa utilizzando cookie e sessioni
• analisi dell'andamento di un sito reale di ecommerce con crescita del traffico in certi mesi e picchi per festività particolari
• per sfruttare meglio il cloud crea per le pagine statiche precalcolate ad esempio per tutti i prodotti, così risparmia chiamate al server
• il carrello lo gestisce in un database esterno o in array interprocesso
• per 100.000 accessi risultano solo 5000 accessi al server, crea la scheda prodotto al volo se non esiste e poi la riutilizza finché la scheda non è aggiornata
• il precalcolo è potente, ma bisogna usare i semafori
• calcola e salva su disco anche le pagine di catalogo divise per categorie
• come mettere una 4d app su amazon, si parte definendo un load balancer, poi si aggiungono le istanze in AWS Management Console, on the Amazon EC2 tab

Questions and answers
• la prima è una richiesta di avere i doc in pdf
• come mai i trigger sono in un unico processo? nella v13 non sono più in un processo, anche se sono ancora su un unico processore
• Wakanda e 4D, commercialmente i due prodotti rimarranno su due mercati diversi (anche se tecnicalmente potrebbero essere unificati) , con un brand nuovo e indipendente
• il webkit verrà rilasciato solo con gli aggiornamenti di 4d, quindi se si vuole usare una nuova release bisogna de-flaggare la web area: quello interno è stabile, ma non sarà aggiornato in modo separato da 4d
• running Client in iPad non si può innanzitutto perché Apple non permette altri linguaggi eseguiti su ipad, forse potrebbe essere fatto qualcosa prendendo un sottoinsieme del 4d client, ma le forms di 4d non sono fatte per il touch, troppo difficile avere buoni risultati
• il lavoro sul server 64bit per Mac OS X è in corso, ma non è prevedibile in poco tempo, non per la v13 forse neanche per la v14 (perchè hanno intenzione di fare major release molto vicine)
• futuro di 4d Write? per ora solo fix, ma non è stato deciso di abbandonarlo
• i plugin di 4d supporteranno i 64bit, 4d pack era solo un'area di quarantena per capire se quei comandi erano usati/necessari, ma tenderanno ad implementarli subito nel sistema principale
• da wakanda sarà possibile usare un comando ConnectTo4DServer ed essere visto come un client da 4D
• 4dRemote in the cloud richiederà un pensamento sulla politica delle licenze
• replication of picture & blob funziona via Sql, per ora non via http
• le caratteristiche di SQL che mancano tipo le view, funzionano internamente, ma sicuramente per la v13 non saranno ancora disponibili
• un linguaggio ad oggetti per 4d potrebbe essere Javascript, ma ci sono molti problemi tecnici da risolvere, soprattutto per mantenere la compabilità con gli standard
• la politica di gestione cache dalla v11 è stata ridisegnata 2 volte, per cercare di trovare un equilibrio fra quantità di oggetti spostati piuttosto che scaricati, attualmente ha un flush del 25%: svuotare la cache al 25% è risultato più performante
• stanno valutando se tenere una seconda cache per oggetti ad alta priorità


Inviato da: Umberto Migliore

Accesso

User: Nuovo
Pass: Accedi



Crediti

Dominio registrato da Pierpaolo Sichera
Sito realizzato da Nexid srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
333 utenti registrati

Pagina servita il 22/12/24 alle 07:02:53 Valid HTML 4.01! Valid CSS!

Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad