by Davide Cerbo e Stefano Linguerri.
Javascript viene sempre consiederato un linguaggio di serie B in cui ¨¨ impossibile seguire le buone regole della programmazione ad oggetti. Ma non ¨¨ cos¨¬! In questa presentazione scopriremo come questo sia un linguaggio in continua evoluzione e come sia possibile sviluppare seguendo i paradigmi della programmazione ad oggetti. Scopriremo tool e librerie che ci permetteranno di sviluppare creando batterie di test, oggetti mock e inserire istruzioni di log nel nostro codice. Durante questa presentazione illustreremo anche la libreria Prototype che ci sar¨¤ di supporto durante gli esempi.
Ho incontrato django 8 mesi fa e mi ha riconciliato con la programmazione web che francamente detestavo. Ne ho apprezzato il disegno e la chiarezza.
Qui presento una libreria -- jungle -- ed alcune applicazioni costruite attorno a django sostituendo il sistema di templating originario con 'mako', un sistema di templating recente di Michael Bayer autore fra l'altro di sqlalchemy.
Il sistema di templating di django ¨¨ forse uno degli elementi pi¨´ criticati e pi¨´ difesi dagli sviluppatori di django. L'idea di base ¨¨ che deve restare facilmente utilizzabile da una utenza (il grafico web) che ha normalmente poca dimestichezza con la programmazione motivo per cui i tradizionali elementi di programmazione sono ridotti o mancanti.
L'esperienza mia ¨¨ che in molte realt¨¤ invece chi scrive le pagine ¨¨ il programmatore stesso o persona che pu¨° imparare con uguale sforzo i rudimenti per potere usare dei sistemi di templating che permettono alcuni costrutti python.
A questo punto si aprono molte possibilit¨¤ decisamente efficaci. I template risultano molto pi¨´ leggibili senza perdere in chiarezza. Particolarmente efficace ¨¨ l'uso di layout simbolici per la creazione di form e tabelle.
La relazione vuole presentare il lavoro fatto in Thunder Systems srl negli ultimi 8 mesi e disponibile con licenza GNU tramite lo studio di alcune piccole applicazioni costruite con questa libreria fra cui un sistema di ticketing ed un sistema di gestione orari dipendenti/cartellino/badge.
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l¡¯utente si aspetta che l¡¯esperienza di utilizzo si avvicini sempre di pi¨´ a quella a cui ¨¨ abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cio¨¨ Rich Internet Application. Google non ¨¨ stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l¡¯interfaccia utente per poi ottenere un codice javascript che funzioner¨¤ su qualsiasi browser web senza l¡¯installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perch¨¨ sviluppare applicazioni RIA
* perch¨¨ usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo¡
Non Conventional Android Programming (Italiano)Davide Cerbo
?
Android ¨¨ il nuovo sistema operativo open source per dispositivi mobili e realizzato da Google che si ¨¨ posta la missione di rendere l¡¯internet mobile accessibile a tutti tramite dispositi a basso costo.
Durante questo intervento mostrer¨° come sia possibile sviluppare per questo sistema operativo (e non solo) senza l¡¯utilizzo di Java e come sia possibile utilizzare una versione light di Spring Framework nelle applicazioni mobili.
A brief deck (it's a lot of slides, but can be run through in 30 mins or so) to provide a basic overview of how markets and marketing has changed and why that should drive in social media. Special thanks to Lee White for some of the slides that define social media, to gaipingvoid.com for the cartoons and Flickr users for the pictures.
The document discusses how business intelligence (BI), which is currently used mainly in corporations, could be applied to consumers to help them make informed decisions in their daily lives. It provides examples of how BI could analyze data about schools, banks, and hospitals to help consumers choose among these options based on meaningful metrics and indicators rather than just opinions or advertisements. The author argues that BI will increasingly move from the corporate world to consumers in coming years as a way to support decision-making with factual data and context.
Jakarta Tapestry ¨¨ un framework basato su un modello a componenti che si distacca dall¡¯approccio imperante del MVC. Durante il talk sar¨¤ sviluppata una semplice web application, un Joke box online, che permetter¨¤ di apprendere i concetti e le features di Tapestry 5. In particolar modo si cercher¨¤ di illustrare come un approccio a componenti permetta di sfruttare a pieno i vantaggi della programmazione ad oggetti, rendendo trasparente la gestione di sessione e request, consentendo allo sviluppatore di concentrarsi sullo stato dell'oggetto, delegando al framework il mapping tra componenti e templates e l'aggiornamento degli oggetti del model. I sofisticati componenti offerti da Tapesrty consento di realizzare pagine dotate di comportamenti complessi con uno sforzo ridotto. Il tutto senza implementare/estendere neanche una interfaccia/classe dell'infrastruttura.
The document provides troubleshooting steps for technical issues customers may experience when trying to access NHL games and content online. It includes checking that the customer's subscription is active, ensuring the correct browser is being used, restarting the computer and router, updating software, adjusting security and acceleration settings, and verifying the computer meets minimum system requirements. The steps progressively work through solutions to common problems like black screens, buffering, or being blacked out of certain games.
- Wicket Security Wasp & Swarm is a framework for adding authentication and authorization to Wicket applications. It provides flexible security models and permission checking.
- Swarm builds on Wasp and provides standard authentication and role-based access control. It uses a HiveMind-based policy system for defining permissions.
- The document provides examples of setting up a basic secure Wicket application using Swarm, defining principals and policies, and implementing authentication and authorization checks.
Jakarta Tapestry ¨¨ un framework basato su un modello a componenti che si distacca dall¡¯approccio imperante del MVC. Durante il talk sar¨¤ sviluppata una semplice web application, un Joke box online, che permetter¨¤ di apprendere i concetti e le features di Tapestry 5.
The document outlines Siemens PLM Software's 2008 partner marketing strategy and programs. It discusses investing in partner success through a global marketing organization, marketing services, training, communications, and programs focused on key products like NX, Teamcenter, and Tecnomatix. Partners are encouraged to leverage marketing services, attend training, understand the marketing programs, and build and execute their own marketing plans aligned with Siemens' strategy.
Una rassegna sul framework per lo sviluppo in Javascript jQuery ed alcuni suoi plugin sviluppati da Microsoft: Template e Datalink
http://www.pasqualepuzio.it
The document discusses how business intelligence (BI), which is currently used mainly in corporations, could be applied to consumers to help them make informed decisions in their daily lives. It provides examples of how BI could analyze data about schools, banks, and hospitals to help consumers choose among these options based on meaningful metrics and indicators rather than just opinions or advertisements. The author argues that BI will increasingly move from the corporate world to consumers in coming years as a way to support decision-making with factual data and context.
Jakarta Tapestry ¨¨ un framework basato su un modello a componenti che si distacca dall¡¯approccio imperante del MVC. Durante il talk sar¨¤ sviluppata una semplice web application, un Joke box online, che permetter¨¤ di apprendere i concetti e le features di Tapestry 5. In particolar modo si cercher¨¤ di illustrare come un approccio a componenti permetta di sfruttare a pieno i vantaggi della programmazione ad oggetti, rendendo trasparente la gestione di sessione e request, consentendo allo sviluppatore di concentrarsi sullo stato dell'oggetto, delegando al framework il mapping tra componenti e templates e l'aggiornamento degli oggetti del model. I sofisticati componenti offerti da Tapesrty consento di realizzare pagine dotate di comportamenti complessi con uno sforzo ridotto. Il tutto senza implementare/estendere neanche una interfaccia/classe dell'infrastruttura.
The document provides troubleshooting steps for technical issues customers may experience when trying to access NHL games and content online. It includes checking that the customer's subscription is active, ensuring the correct browser is being used, restarting the computer and router, updating software, adjusting security and acceleration settings, and verifying the computer meets minimum system requirements. The steps progressively work through solutions to common problems like black screens, buffering, or being blacked out of certain games.
- Wicket Security Wasp & Swarm is a framework for adding authentication and authorization to Wicket applications. It provides flexible security models and permission checking.
- Swarm builds on Wasp and provides standard authentication and role-based access control. It uses a HiveMind-based policy system for defining permissions.
- The document provides examples of setting up a basic secure Wicket application using Swarm, defining principals and policies, and implementing authentication and authorization checks.
Jakarta Tapestry ¨¨ un framework basato su un modello a componenti che si distacca dall¡¯approccio imperante del MVC. Durante il talk sar¨¤ sviluppata una semplice web application, un Joke box online, che permetter¨¤ di apprendere i concetti e le features di Tapestry 5.
The document outlines Siemens PLM Software's 2008 partner marketing strategy and programs. It discusses investing in partner success through a global marketing organization, marketing services, training, communications, and programs focused on key products like NX, Teamcenter, and Tecnomatix. Partners are encouraged to leverage marketing services, attend training, understand the marketing programs, and build and execute their own marketing plans aligned with Siemens' strategy.
Una rassegna sul framework per lo sviluppo in Javascript jQuery ed alcuni suoi plugin sviluppati da Microsoft: Template e Datalink
http://www.pasqualepuzio.it
Programmazione a oggetti tramite la macchina del caff¨¦ (pt. 2)Marcello Missiroli
?
Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caff¨¦ (tipo Nespresso)
ºÝºÝߣs 2 di 3
10. Qualcosa di utile $('...') -> come getDocumentById('...') ma ritorna un Element di Prototype
11. $$('...') -> Selettore CSS $$('.menu #submenu) ritorna tutti gli elementi che hanno class submenu all'interno di un elemento che ha id menu
12. Ajax.request(Url, {...}) -> Esegue una richiesta AJAX, le graffe conterranno le opzioni della request: new Ajax.Request(url, {onSuccess: function(transport) {...}); Esistono anche altri metodi come: updater e periodicalUpdater.
13. Template -> Permette di definire delle stringe parametrizzabili var t = new Template('Name: #{name}, surname: #{surname}'); var show = {name: 'Davide', surname: 'Cerbo'}; t.evaluate(show); //return ¡°Name: Davide, surname: Cerbo¡±
14. Observer -> Permette di osservare gli eventi su un elemento $('id').observe('click', function(element){...});
15. Di cosa abbiamo bisogno? Per considerare JAVASCRIPT un linguaggio Object Oriented abbiamo bisogno di:
20. Strutture dati complesse Hash -> var h = new Hash(); h.set(¡°key¡±, ¡°value¡±); h.get(¡°key¡±); //return ¡°value¡± h.unset(¡°key¡±); h.toQueryString() //return ¡°key1=v1&key2=v2&...¡±
21. Enumerable -> sono liste iterabili con metodi come each, map, find, select, etc... $A(...).each(function(e){ alert(e.id); }); $$('...') restituisce un Enumerable Sono tutte CLOSURE
22. Questione di classe Javascript Classico var Person = Class.create(); Person.prototype = { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } }; var jack = new Person (¡°Jack Maffai¡±); jack.say(¡°Hi Boy¡±); //return Jack Maffai: Hi boy! Prototype var Person = Class.create({ initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } }); var jack = new Person (¡°Jack Maffai¡±); jack.say(¡°Hi Boy¡±); //return Jack Maffai: Hi boy!
24. Interfacce? Non ci sono e basta! Accontentiamoci delle classi E ricordiamoci che in Javascript vige la regola: ¡° If it walks like a duck and quacks like a duck, I would call it a duck.¡±
25. Al volo var john = new Pirate('Long John'); john.sleep(); // -> ERROR: sleep is not a method Person.addMethods({ sleep: function() { return this.say('ZzZ'); } }); john.sleep(); // -> "Long John: ZzZ, yarr!" Il metodo viene aggiunto a tutte le istanze e le sottoclassi di Pirate
26. DOMinare con Prototype Questo approccio deve cambiare il nostro modo di vedere la programmazione Javascript PROGRAMMAZIONE FUNZIONALE
27. Esempio HTML: <table id="simonboard"> <TR> <TD id="red"></TD> <TD id="blue"></TD> <TD id="fuchsia"></TD> </TR> <TR> <TD id="black"></TD> <TD id="green"></TD> <TD id="aqua"></TD> </TR> <TR> <TD id="gold"></TD> <TD id="magenta"></TD> <TD id="coral"></TD> </TR> </table> Script di startup: <script language="JavaScript"> // $('simonboard') -> indica la tabella // 5 -> il numero massimo di quadrati da colorare new Board($('simonboard')).start(5); </script> Il colore predefinito per il quadrato Tabella da utilizzare
28. Lo script var Tile = Class.create({ initialize: function(color, element) { this.color = color; this.element = element; }, blink: function() { this.element.style.backgroundColor = this.color; new Effect.Opacity(this.element, {duration:2, from:1.0, to:0}); // Scrip.aculo.us } }); var Board = Class.create({ initialize: function(boardElement) { this.tiles = boardElement.select("td").map(function(element){ return new Tile(element.id, element); }); }, //numero massimo di blocchi da colorare start: function(steps) { var boardSize = this.tiles.length; var tempTiles = this.tiles; //serve per problemi di scope si corregge usando la funzione bind() $R(1, steps).each(function(i){ //funzione di Prototype che riempe un array con un range di valori var index = Math.ceil(Math.random() * boardSize); var tile = tempTiles[index-1]; window.setTimeout(function() { tile.blink(); }, 500 * index); }); } });
29. Un concetto utile: bind start: function(steps) { var boardSize = this.tiles.length; $R(1, steps).each(function(i) { var index = Math.ceil(Math.random() * boardSize); var tile = this.tiles[index-1]; window.setTimeout(function() { tile.blink(); }, 500 * index); } .bind(this) ); } Il bind serve ad evitare problemi di scope, se lo avessi omesso il this considerato dalla funzione sarebbe stato l'oggeto window . In Javascript tutte le funzioni sono eseguite in un determinato contesto e questo ¨¨ referenziabile tramite la parola chiave da this Le funzioni utilizzate come closure sono funzioni globali, quindi hanno il contesto globale