Attraverso un semplice esempio viene mostrato come utilizzare Glade e Anjuta per la realizzazione di GUI sfruttando la libreria grafica GTK e il linguaggio C.
jQuery 竪 un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessit di scrittura. Vista la sua diffusione e potenza, 竪 stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'竪 jQuery, e scopriremo le potenzialit e funzionalit che offre, verificando se il motto "write less do more" sia vero o meno.
This document provides an introduction to the Go programming language. It was created by Google in 2009 to address issues with concurrency and web programming. Some key features of Go include being fast, scalable, and productive while also having garbage collection and good support for concurrency, testing, and package management. The document discusses features like Go's compilation, static typing, packages, channels, and implicit interfaces. It also provides examples and links to resources for learning more about Go.
More Related Content
Similar to Javascript Camp - Listener Per Eventi (20)
jQuery 竪 un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessit di scrittura. Vista la sua diffusione e potenza, 竪 stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'竪 jQuery, e scopriremo le potenzialit e funzionalit che offre, verificando se il motto "write less do more" sia vero o meno.
This document provides an introduction to the Go programming language. It was created by Google in 2009 to address issues with concurrency and web programming. Some key features of Go include being fast, scalable, and productive while also having garbage collection and good support for concurrency, testing, and package management. The document discusses features like Go's compilation, static typing, packages, channels, and implicit interfaces. It also provides examples and links to resources for learning more about Go.
"Da sempre fare il deploy di applicazioni multi-istanza rappresenta una sfida per lo sviluppatore e per il sistemista. Oggi grazie a strumenti gratuiti e un p嘆 di esperienza in materia 竪 possibile eseguire tale operazione lavorando su pipeline che prevedono testing automatico, validazione del code style e molto altro, in modo da ottenere una Continuous Integration consistente, efficace ed in tempi brevissimi. Scopriamo insieme come con un progetto Laravel e le pipeline di Bitbucket."
In queste slide potete trovare una raccolta di informazioni generiche e qualche link a risorse utili per iniziare o per approfondire la conoscenza di questo nuovo linguaggio di programmazione.
The document discusses various Git workflows including Git Flow, semantic versioning, and other approaches. It provides an overview of features branches, release branches, and hotfix branches in Git Flow. The talk aims to understand which workflows are best for PHP open source projects. It also briefly covers centralized, feature branch, and forking workflows as alternatives to Git Flow.
This document discusses Domain Driven Design (DDD) value objects. It defines value objects as immutable objects that measure or describe a concept but have no identity. Their equality is based on attribute values rather than identity. The document outlines characteristics of value objects such as being immutable, having attributes that form a conceptual whole, being replaceable, supporting equality comparisons, and having side-effect-free methods. It provides examples of value objects and discusses standard types, storage, testing, implementations, and resources for further information on DDD value objects.
This document outlines an agenda for introducing the Yii PHP framework. It begins with introducing the presenter and an overview of Yii features. It then discusses suggested tools for development and how to start a new application. Next, it covers test-driven development and provides an example of building a blog application with Yii, including generating models, CRUD and interacting with the database. The document demonstrates key Yii concepts like MVC and using Gii and provides code samples for common tasks like selecting, inserting, updating and deleting data with an ActiveRecord model.
2. DOM Events DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
3. DOM Events / (1/2) I DOM events permettono a linguaggi di programmazione come Javascript , JScript, EcmaScript, Java, VBScript di registrare degli event handler/listener in dei nodi di elementi all'interno do un albero DOM . Un albero DOM lo possiamo ritrovare all'interno di documenti, per esempio, html , xhtml , xul, svg.
4. DOM Events / (2/2) L'esecuzione di codice Javascript in risposta ad un evento rimane una delle funzionalit che sono oggetto di implementazioni differenti tra i vari browser . Per combattere contro queste diversit, il W3C ha provato a standardizzare il modello ad eventi nel DOM Level 2 .
5. DOM Level 2 DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
6. DOM Level 2 / intro / (1/6) E' interessante notare che anche Microsoft ha partecipato allo sviluppo delle specifiche del DOM Level2; Al rilascio di Internet Explorer 5.5, Microsoft ha deciso di non supportare le specifiche all'interno del suo Browser. Lo stesso vale per le release successive ovvero la 6.0 e la 7.0 8.0;
7. DOM Level 2 / modello DOM / (2/6) Quando viene caricato, un documento HTML viene trasformato in una struttura di oggetti javascript chiamata modello DOM ; $(document).ready(); // we love jquery =) Ogni elemento , compresi gli attributi, diviene un oggetto . Javascript pu嘆 accedere a questi oggetti per modificarne la struttura.
8. DOM Level 2 / i nodi / (3/6) Ciascun elemento viene rappresentato tramite un nodo (tag ...) e ci sono diversi tipi di nodi in base ad alcune semplici caratteristiche; Il nodo di un elemento si distingue in base al nome (che chiamiamo normalmente tag); I nomi non devono essere per forza univoci; ES: Due paragrafi (<p>...</p>) saranno identici fino a che non verranno caratterizzati dall' attributo id .
9. DOM Level 2 / i nodi / (4/6) document 竪 un nodo sempre presente a prescindere da che cosa contiene il documento stesso. Prende anche il nome di nodo del documento ; I nodi degli elementi sono differenti dal nodo del documento e rappresentano gli effettivi elementi, tag, presenti nella pagina; Il contenuto di un documento si trova nei nodi testuali oppure nei nodi degli attributi .
10. DOM Level 2 testi (5/6) Tutto quello che non 竪 compreso tra parentesi angolari , viene considerato nodo testuale ; I nodi testuali nodo non possono avere figli ; Se si indenta il codice di un documento HTML per renderlo pi湛 leggibile all'occhio umano, tra un nodo testuale e l'altro verranno inseriti anche i tab per separare i tag o i testi. I nodi di spaziatura sono gestiti in maniera differente dai vari browser e bisogna fare attenzione quando si conta sul numero o sull'ordine dei nodi presenti nel DOM;
11. DOM Level 2 attributi (6/6) I nodi degli attributi sono sempre associati ad un elemento , 竪 ovvio che non possiamo avere un attributo senza che vi sia un nodo (tag ...); non fanno parte del DOM ed 竪 per questo motivo che bisogna fare uso di funzioni differenti per operare su di essi, sia in lettura che in scrittura ;
12. Gestori di Eventi DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
13. Gestori di Eventi - (1/7) Il modo pi湛 semplice per gestire gli eventi con del codice javascript, 竪 quello di usare gli event handler ( precedenti al DOM ); Un gestore di eventi, 竪 una funzione javascript contenuta in un nodo del DOM che viene richiamata automaticamente quando si verifica un determianto evento su quel nodo; Se non attendiamo che il DOM sia stato caricato, non possiamo operare sui suoi nodi. Ecco la soluzione: $(document).ready(function(){ });
14. Gestori di Eventi - (2/7) Quando siamo di fronte ad un codice HTML come mostrato di seguito e facciamo click sul link: <a href= http://www.unodeitanti.com >unodeitanti.com</a> Come impostazione predefinita, il browser risponde all' evento click richiamando l'indirizzo specificato nell'attributo href , ma prima che ci嘆 avvenga, 竪 possibile predisporre un gestore di eventi che risponda a questo in particolare.
15. Gestori di Eventi - (3/7) Usare i gestori di eventi 竪 una soluzione pratica e veloce quando si deve programmare. In oltre danno la sicurezza di poter funzionare su tutti i browser ; 竪 possibile assegnare un solo evento ad un singolo gestore di event i su un determinato elemento HTML ; Significa che non si pu嘆 associare ad un evento una serie di attivit da svolgere ( non in modo elegante );
16. Gestori di Eventi - (4/7) var link = document.getElementById("idlink"); link.onclick = function () { alert("ciao"); } link.onclick = function () { alert("Io sono ..."); }
17. Gestori di Eventi - (5/7) Quando usiamo il gestore di eventi per assegnare la seconda alert, in realt si sovrascrivono quella precedenti; Domanda: quante volte pu嘆 capitare che ci siano pi湛 script da richiamare al click di un determinato link? Risposta: forse mai =). Per嘆 ci sono molti eventi che possono richiedere l'intervento di pi湛 script. Un caso tra i tanti, il submit di un form che dovra controllare tutti i campi;
18. Gestori di Eventi - (6/7) Soluzione generale var link = document.getElementById("idlink"); link.onclick = function () { alert("Ciao"); alert("Io sono ..."); } Oppure function script1 () { alert("Uno"); } function script2 () { alert("Due"); } var link = document.getElementById("idlink"); link.onclick = function () { script1(); script2(); }
19. Gestori di Eventi - (7/7) Dentro le funzioni script1 e script2 l'attributo this non far pi湛 riferimento all'elemento che ha generato l'evento; Se uno dei due eventi restituisce false, non viene bloccata l'azione predefinita dell'elemento;
20. Listener per Eventi DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
21. Listener per Eventi - (1/5) Sono come i gestori di eventi , tranne per il fatto che ad essi si possono assegnre pi湛 listenere ad un solo nodo ; Ci consentono l'uso della parola chiave this ; Sono una specifica del W3C ; Ma ... Internet Explorer offre una propria versione completamente differente; (@#&%!$) Anche Safari usa i listener ma con un meccanismo leggermente diverso;
22. Listener per Eventi - (2/5) Come i gestori di eventi, i listener sono una funzione javascript che viene connessa ad un nodo del DOM ; Se volessimo fare paragoni, i gestori di eventi sono una porta USB mentre i listener sono come un hub ;
23. Listener per Eventi - (3/5) elemento . addEventListener ( evento , listenerPerEventi , false); addEventListener accetta tre argomenti: evento l'evento pu嘆 essere ad esempio click oppure mouseover , senza on davanti ; listener ovvero la funzione listener stessa; tipo di listener indica se si tratta di un listener per la cattura di eventi o meno;
24. Listener per Eventi - (4/5) Per Internet Explorer le cose sono leggermente differenti: elemento . attachEvent (on evento , listenerPerEventi ); AttachEvent anzich辿 addEventListener ; Onevento anzich辿 semplicemente evento ; Non c'竪 nessun terzo argomento;
25. Listener per Eventi - (5/5) Come distinguere le due implementazioni If ( typeof elemento .addEventListener != undefined ) { elemento .addEventListener( evento , listenerPerEventi , false); } else { elemento .attachEvent(on evento , listenerPerEventi ); } * vedi codice di esempio ...
26. Azioni Predefinite DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
27. Azioni predefinite - (1/3) <a href=... onclick=javascript:return false;>...</a> Per bloccare l' azione predefinita di un gestore di eventi ed impedirte che il browser la svolga, 竪 sufficente restiture false al gestore dell'evento. Nel modello per listener , al listenerPerEvento viene passato anche l'oggetto dell'elemento le cui propriet contengono informazioni riguardanti l'evento generato ed i metodi che consentono di controllare il modo in cui l'evento viene elaborato dal browser .
28. Azioni predefinite - (2/3) Per bloccare l'evento di default basta richiamare l'evento preventDefault(); sull'elemento: clickListener: function (event) { if ( confirm (Sei sicuro di voler aprire il link?) ) { event.preventDefault(); } } Basta che un listener richiami questo metodo per evitare che venga eseguita l'operazione di default . * vedi codice di esempio ...
29. Azioni predefinite - (3/3) In Internet Explorer l' oggetto evento non viene passato come argomento al listener, ma viene reso disponibile come variabile globale chiamata event ; clickListener: function (event) { if ( confirm (Sei sicuro di voler aprire il link?) ) { event.returnValue = false; } } La variabile globale ha una propriet returnValue che si pu嘆 impostare a false;
30. Propagazione di Eventi DOM Events; DOM Level 2; Gestori di Eventi; Listener per eventi; Azioni predefinite; Propagazione di eventi;
31. Propagazione di Eventi (1/5) Gli eventi, attraversano l'intera struttura del DOM ed il meccanismo si chiama propagazione dell'evento . Se viene associato un listener ad un link contenuto in un paragrafo, l'evento onclick viene esteso anche al contenitore del link e verr attivato anche sul paragrafo . <p> <a href= http://www.example.com >example.com</a> </p>
32. Propagazione di Eventi (2/5) Nella fase di cattura , l'evento percorre tutto il DOM da document fino all'elemento che ha generato l'evento. Ogni volta che viene incontrato un elemento, viene controllato se ad esso 竪 associato un listener per la cattura di eventi relativi (ecco a che serve il terzo parametro): elemento .addEventListener( evento , listenerPerEventi , false );
33. Propagazione di Eventi (3/5) Il metodo attachEvent di Internet Explorer non prevede il terzo parametro, proprio perch竪 il modello ad eventi 竪 differente e non prevede i listener per la cattura di eventi ; Molti sviluppatori evitano quindi di sfruttare i listener per la cattura di eventi ;
34. Propagazione di Eventi (4/5) Nella fase di target il browser ha raggiunto il nodo DOM dell'elemento cui 竪 stato associato il listener; Al click su un link il target sar il link stesso mentre ma nel caso di Safari, il target sar il nodo testuale; Nella fase di risalita , viene ripercorso tutto il DOM fino a document e vengono eseguiti tutti i listener che non sono listener per la cattura di eventi , ad eccezione degli eventi focus() e blur();
35. Propagazione di Eventi (5/5) Per interrompere la propagazione di un evento 竪 sufficente richiamare il metodo stopPropagation ; Nel caso di Internet Explorer dovremo impostare la propriet cancelBubble a true;
36. I problemi di memoria in IE (1/1) In internet Explorer , la memoria occupata per un listenere non viene rilasciata nemmeno al cambio della pagina; I rallentamenti del browser potrebbero costringere l'utente a riavviarlo; La soluzione consiste nel configurare un listener per l'evento unload dell'oggetto window, ed in questo listener si possono eliminare tutti i listener per eventi definiti per il documento evitando lo spreco di memoria;
37. Riepilogo (1/2) Internet Explorer utilizza attachEvent / detachEvent al posto di addEventListener / removeEventListener ; Internet Explorer chiama gli eventi con il prefisso on invece di chiamarli semplicemente evento ; Internet Explorer usa event come variabile globale invece di passarla come parametro al listener ;
38. Riepilogo (2/2) Per bloccare un evento InternetExplorer richiede di impostare la propriet cancelBubble mentre invece di richiamare il metodo stopPropagation (); Internet Explorer richiama i listener come funzioni indipendenti e ci costringe, se vogliamo riciclare il codice, ad ottenere un riferimento all'elemento target invece di usare this ; Internet Explorer non si preoccupa di ripulire la memoria automaticamente ;
39. I framework javascript Prototype: Event.observe(elemento, evento, listenerPerEventi); Event.stopObserving(elemento, evento, listenerPerEventi); jQuery: $(selettore).bind(evento, listenerPerEventi); $(selettore).unbind(evento, listenerPerEventi); Oppure ( sempre con jquery ... ) $(selettore).click(listenerPerClick);