This document provides an introduction to Flex's data binding feature. It discusses how data binding works, how to implement it using metadata tags like [Bindable], and how to create bindings between objects and properties in MXML and ActionScript. It also covers more advanced topics like custom events, two-way binding, and improving performance with custom events. The goal is to help developers maximize Flex's power by understanding and properly leveraging its data binding capabilities.
The Java EE 7 specification has evolved quite a lot since the early days of the specification. One one hand, Java EE 7 continues the ease of development push that characterized prior releases by bringing further simplification to enterprise development. On the other hand, Java EE 7 tackle new emerging requirements such as HTML 5 support.
Last but not least, Java EE 7 also adds new, APIs such as the REST client API in JAX-RS 2.0, WebSockets, JSON-P, JMS 2, Batch Processing, etc.
This session will give an technical overview of the Java EE 7 platform. GlassFish 4.0, the world first Java EE 7 Application Server, will be used to demonstrate some of the Java EE 7 features.
Developing Complex Business Rules with Drools IntegrationBonitasoft
Create rich and dynamic rule driven business process applications with the Bonita Open Solution BPM Suite.
Learn how to add business rules to your process transitions easily with decision tables in the Bonita Studio for process modeling, and for more complex rules, use the Drools Connector to call shared rules.
Rawsthorne Dan - from usability studies to storiesMagneta AI
The biggest problem in an agile Project is determining the Product Backlog — what will be built?
We know we don’t want «Big Analysis Up Front» because we know that over-specifying will get us into trouble; but we also need to know what we’re building so that we can discuss it with our Stakeholders and can estimate how much time and effort it will take.
How do we reconcile these two (seemingly) inconsistent needs?
In this talk Dan describes a strategy that begins with usability studies
and ends with actionable Stories. The strategy involves Story Mapping (from Jeff Patton), Atomic Use Cases, and StoryoTypes (from Gerard Meszaros). This blended approach is both straightforward and effective – come see how it’s done!
Developing RIAs... 10 reasons to use Adobe FlexMatthias Zeller
Rich Internet Applications combine the richness of desktop applications with the reach of the Internet. This presentations covers 10 reasons why you should consider Adobe Flex for your next web application project.
The Java EE 7 specification has evolved quite a lot since the early days of the specification. One one hand, Java EE 7 continues the ease of development push that characterized prior releases by bringing further simplification to enterprise development. On the other hand, Java EE 7 tackle new emerging requirements such as HTML 5 support.
Last but not least, Java EE 7 also adds new, APIs such as the REST client API in JAX-RS 2.0, WebSockets, JSON-P, JMS 2, Batch Processing, etc.
This session will give an technical overview of the Java EE 7 platform. GlassFish 4.0, the world first Java EE 7 Application Server, will be used to demonstrate some of the Java EE 7 features.
Developing Complex Business Rules with Drools IntegrationBonitasoft
Create rich and dynamic rule driven business process applications with the Bonita Open Solution BPM Suite.
Learn how to add business rules to your process transitions easily with decision tables in the Bonita Studio for process modeling, and for more complex rules, use the Drools Connector to call shared rules.
Rawsthorne Dan - from usability studies to storiesMagneta AI
The biggest problem in an agile Project is determining the Product Backlog — what will be built?
We know we don’t want «Big Analysis Up Front» because we know that over-specifying will get us into trouble; but we also need to know what we’re building so that we can discuss it with our Stakeholders and can estimate how much time and effort it will take.
How do we reconcile these two (seemingly) inconsistent needs?
In this talk Dan describes a strategy that begins with usability studies
and ends with actionable Stories. The strategy involves Story Mapping (from Jeff Patton), Atomic Use Cases, and StoryoTypes (from Gerard Meszaros). This blended approach is both straightforward and effective – come see how it’s done!
Developing RIAs... 10 reasons to use Adobe FlexMatthias Zeller
Rich Internet Applications combine the richness of desktop applications with the reach of the Internet. This presentations covers 10 reasons why you should consider Adobe Flex for your next web application project.
Quality Best Practices & Toolkit for Enterprise FlexFrançois Le Droff
Quality Best Practices & Toolkit for Enterprise Flex
Presentation given at the French Flex User group : "les tontons flexeurs" on the 21st of July 2009
Author : Xavier Agnetti, François Le Droff (and Alex Ulhmann)
Copyright: Adobe
Slides of my hands-on lab at MAX 2011.
They explain how to optimize an HTML5 site running on a WEM instance, first quickly introducing HTML5 an WEM. Then, optimizing the CSS and JS inclusions, using the new Client Library feature. And finally, setting up the Dispatcher cache to deliver the right HTTP headers.
Prototyping Adobe AIR Applications with Fireworks CS4Juan Sanchez
This presentation gives an overview of prototyping AIR applications using Fireworks CS4. You can get the source for the prototyped application here: http://scalenine.com/blog/2008/12/01/adobe-max-presentation-and-source/
Search Engines and Flash: Secrets, Tricks, and Black Magicguestb1f3a
Adobe Flash is a binary format and has not always been accessible to search engine spiders (small bits of code that algorithmically determine a page’s content for rankings in search engines). SEO experts have developed several key workarounds and new technical developments have made new functionality available to search engines and developers alike.
Duane Nickull, an Adobe Technical Evangelist, will showcase some advanced tips and tricks to give you the edge over the competition as well as share some secrets. Attendees will learn how to increase initial page rankings as well as monitor and increase dynamic page ranks.
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
I had the chance to present at the BreizhJUG (a Breton Java user group) a session named "Flex for Java Deveoppers".
A crowd of almost 100 happy Java developers and architects was willing to know more about Flex.
I had an an hour and half to cover :
*
a basic presentation of the flash and AIR platforms,
*
cool UX flash/flex/AIR demos
*
the latest great features of flash 10
*
and flex, and its ecosystem from a Java developer perspective (mvn framework, testing libraries, building and quality tools, blazeds, lcds)
I ended up the session presenting fna maven archetypes
A not so brief overview of all the major Symfony2 components.
Some of the slides have been paraphrased from presentations by the venerated Fabien Potencier, Jonathan Wage, and Ryan Weaver.
David Coletta Architecting A Shared Codebase For Browser And Desktop Finaldcoletta
Learn from our experience in adapting a complex codebase like the application Buzzword to run also as an Adobe AIR application. This session addresses the architectural challenges of developing SWF files to be shared between browser and AIR versions. We’ll cover user interface considerations, such as reconciling a single browser window with multiple AIR windows, and technical issues, like problems with the Singleton pattern when using multiple native windows. Other topics include abstracting code that must call AIR only APIs and packaging code into modules that load over HTTP for browsers and load from the file system under AIR.
EffectiveUI's Ari Weissman (Lead Experience Architect) and Lys Maitland (Senior Experience Planner) spoke at Denver Startup Week 2016. Discussion description:
Test early, test often.
It’s a mantra that’s been proven successful time and again when it comes to innovation and design. So why aren’t you doing it? In the start-up world, when everything is moving so quickly, it can be easy to overlook or postpone collecting feedback from real people because of cost, time, or lack of preparation. Don’t let those things stop you. Valid data can be captured cheaply, quickly, and with half-finished products and strategies.
This talk will cover:
What is user testing and why is it important
How to plan for user testing
What are ways to make testing cheaper
What are ways to make testing quicker
How to test with different fidelities of concept and design
How to collect data more frequently
Opportunities for getting the whole team engaged
What to do with the insights/outcomes of research
EffectiveUI's Raschel Iarocci, Lead Experience Architect, spoke at Denver Startup Week 2016. Discussion description:
When a design tests poorly with usability participants it can feel pretty defeating — especially when it has tested well in the past. After this happens, your UX team may go through a thought process similar to grieving, first denying that feedback is valid, then perhaps experiencing anger, then progressing through bargaining and depression, to finally acceptance.
During her talk, Raschel shared contemporary strategies for dealing with each of these five stages, enabling the group to move past initial reactions and get down to the work of addressing the design challenges.
Quality Best Practices & Toolkit for Enterprise FlexFrançois Le Droff
Quality Best Practices & Toolkit for Enterprise Flex
Presentation given at the French Flex User group : "les tontons flexeurs" on the 21st of July 2009
Author : Xavier Agnetti, François Le Droff (and Alex Ulhmann)
Copyright: Adobe
Slides of my hands-on lab at MAX 2011.
They explain how to optimize an HTML5 site running on a WEM instance, first quickly introducing HTML5 an WEM. Then, optimizing the CSS and JS inclusions, using the new Client Library feature. And finally, setting up the Dispatcher cache to deliver the right HTTP headers.
Prototyping Adobe AIR Applications with Fireworks CS4Juan Sanchez
This presentation gives an overview of prototyping AIR applications using Fireworks CS4. You can get the source for the prototyped application here: http://scalenine.com/blog/2008/12/01/adobe-max-presentation-and-source/
Search Engines and Flash: Secrets, Tricks, and Black Magicguestb1f3a
Adobe Flash is a binary format and has not always been accessible to search engine spiders (small bits of code that algorithmically determine a page’s content for rankings in search engines). SEO experts have developed several key workarounds and new technical developments have made new functionality available to search engines and developers alike.
Duane Nickull, an Adobe Technical Evangelist, will showcase some advanced tips and tricks to give you the edge over the competition as well as share some secrets. Attendees will learn how to increase initial page rankings as well as monitor and increase dynamic page ranks.
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
I had the chance to present at the BreizhJUG (a Breton Java user group) a session named "Flex for Java Deveoppers".
A crowd of almost 100 happy Java developers and architects was willing to know more about Flex.
I had an an hour and half to cover :
*
a basic presentation of the flash and AIR platforms,
*
cool UX flash/flex/AIR demos
*
the latest great features of flash 10
*
and flex, and its ecosystem from a Java developer perspective (mvn framework, testing libraries, building and quality tools, blazeds, lcds)
I ended up the session presenting fna maven archetypes
A not so brief overview of all the major Symfony2 components.
Some of the slides have been paraphrased from presentations by the venerated Fabien Potencier, Jonathan Wage, and Ryan Weaver.
David Coletta Architecting A Shared Codebase For Browser And Desktop Finaldcoletta
Learn from our experience in adapting a complex codebase like the application Buzzword to run also as an Adobe AIR application. This session addresses the architectural challenges of developing SWF files to be shared between browser and AIR versions. We’ll cover user interface considerations, such as reconciling a single browser window with multiple AIR windows, and technical issues, like problems with the Singleton pattern when using multiple native windows. Other topics include abstracting code that must call AIR only APIs and packaging code into modules that load over HTTP for browsers and load from the file system under AIR.
EffectiveUI's Ari Weissman (Lead Experience Architect) and Lys Maitland (Senior Experience Planner) spoke at Denver Startup Week 2016. Discussion description:
Test early, test often.
It’s a mantra that’s been proven successful time and again when it comes to innovation and design. So why aren’t you doing it? In the start-up world, when everything is moving so quickly, it can be easy to overlook or postpone collecting feedback from real people because of cost, time, or lack of preparation. Don’t let those things stop you. Valid data can be captured cheaply, quickly, and with half-finished products and strategies.
This talk will cover:
What is user testing and why is it important
How to plan for user testing
What are ways to make testing cheaper
What are ways to make testing quicker
How to test with different fidelities of concept and design
How to collect data more frequently
Opportunities for getting the whole team engaged
What to do with the insights/outcomes of research
EffectiveUI's Raschel Iarocci, Lead Experience Architect, spoke at Denver Startup Week 2016. Discussion description:
When a design tests poorly with usability participants it can feel pretty defeating — especially when it has tested well in the past. After this happens, your UX team may go through a thought process similar to grieving, first denying that feedback is valid, then perhaps experiencing anger, then progressing through bargaining and depression, to finally acceptance.
During her talk, Raschel shared contemporary strategies for dealing with each of these five stages, enabling the group to move past initial reactions and get down to the work of addressing the design challenges.
UX Design Process 101: Where to start with UXEffective
EffectiveUI's Ari Weissman, Lead Experience Architect, spoke at Denver Startup Week 2016. Discussion description:
You’ve probably heard about user experience, design thinking, and a host of other terminology for following a human-centered approach to product design, but where do you start? If you’re thinking about working with a UX agency for the first time or tackling design on your own, this session is for you. EffectiveUI lead experience architect Ari Weissman will cover the key things you need to know:
What UX is (and what it’s not)
The UX design process
Measuring and validating experience
Points of frequent failure and how to avoid them
Give Them What They Want: Discovering Customer Need with Wearable TechnologyEffective
Presented at Design Thinking for Banking and Financial Services 2015
Dennis Ganesh, mobile platform lead architect, TIAA-CREF
Dan Saltzman, VP of design and user experience, EffectiveUI
As financial services companies race to disrupt the marketplace in any way possible, wearables are an attractive investment opportunity (and for good reason). Wearables can create quite the quandary, though: rapid innovation is key in getting a digital product to market when it still has the ability to disrupt, but there’s tremendous risk in being first to market, only to deliver a product that fails to improve customer experience. So how do you innovate quickly enough to beat your competitors to market and deliver a delightful experience to your customers?
In this session, EffectiveUI and TIAA-CREF explain the model they used together for rapid innovation and prototyping to deliver based on customer needs. We cover these topics:
• Why did we do it?
• How did we do it?
• What did we create?
• What were the critical elements for collaboration?
• How can you generate a market-viable product idea and prototype it in one day?
Common Innovation Myths (World Usability Day)Effective
From Green Screens to Lone Genius: Common Innovation Myths. Presented by EffectiveUI’s Steve Fors and Art Chinda at BNY Mellon’s World Usability Day celebration on November 12, 2015. Dispelling innovation myths, what innovation really is, the process of innovation and how to avoid innovation pitfalls.
Introduction to UX provides an overview of user experience design including what it encompasses and how the process works, the goal and principles of UX design, how to measure and improve UX, and the role of a UX agency. Presented by Ari Weissman, lead experience architect at EffectiveUI.
2016 SXSW Measures for Justice Panel Picker PresentationEffective
UNMASKING THE CRIMINAL JUSTICE SYSTEM:
(2016 SXSW Panel Picker Submission)
The two women behind Measures for Justice and EffectiveUI discuss developing the first platform of its kind to simplify the complexities of criminal justice performance data, creating transparency and driving action.
EffectiveUI and Water For People teamed up again for a dramatic new take on the non-profit's reporting tool. To promote Water For People's mission of providing sustainable water to "Everyone Forever" the tool relies on data-driven design concepts and progressive visualization.
Getting into the Game: How EA Put User Research into PracticeEffective
Presented at Total Customer Experience, February 2015, by:
• Jordan Girman, group user experience director, EA
• Shane Johnston, lead experience planner, EffectiveUI
Personas and journey maps are becoming more commonplace these days, as companies realize the value of understanding their customers beyond their age, gender and income. Getting a clear picture of customers’ needs, goals, motivations and attitudes plays a critical role in designing products and solutions that resonate with your audience.
But what happens after the project is complete and the personas are delivered? In many cases, they may live in posters on the wall, or in a PowerPoint presentation in a file. How do companies make sure that their investment in this important research actually serves its purpose?
EA conducted a large ethnographic research project with user experience agency EffectiveUI, where 25 NHL and UFC gamers were observed playing their respective games and interviewed on expectations, perceptions and motivations. The result was a set of comprehensive persona profiles that clearly define EAs audiences for these specific games.
Through the lens of EA’s experience, this session will cover how to embark on a persona project within a large corporate culture, as well as how to keep personas alive beyond the deliverable and make them prevalent within the organization.
Scottrade and Understanding the Customer Journey: When Segmentation Isn’t EnoughEffective
Presented at Engagement & Experience Expo 2014 by:
• Gina Bhawalkar, assistant vice president of user experience and accessibility at Scottrade
• Lys Maitland, senior user experience designer at EffectiveUI
By nature, Scottrade, Inc., a leading investing services firm clearly focused on numbers, had ample data and information on its clients from a UX and marketing research standpoint. As the company worked to enhance its strategic vision for client experience and add new services and solutions, company leaders knew they needed to not only bring all of their customer research together, but also fill in some gaps to gain a deeper understanding and get a full picture of its audience – both current clients and potential clients they are looking to attract. Working in close collaboration with user experience agency EffectiveUI, Scottrade embarked on a comprehensive ethnographic study, interviewing 36 people in their own environments to uncover what trading and investing meant to their lives overall, how Scottrade fits into this, the tools they use, where they need guidance or help and how they feel along the way.
Scottrade came away with a better understanding of its clients and what they needed beyond what the company’s segmentation models provided. Scottrade is now actively working to turn what they learned into action and tailoring its tools around its audiences. This session will provide the following tips to customer experience professionals who also want to really know their customers:
• How to start the process of embarking on a large research project, including how to make sure stakeholders are on board
• How to combine ethnographic research with quantitative research for the best understanding
• How to bring participant stories from the research to life for team members who were not involved in the interviews
• How to effectively socialize personas and journey maps throughout an organization
• Using personas and journey maps to drive actual business decisions and initiatives
• Taking the next step in monitoring and addressing the customer pain points uncovered in the journey mapping process
A Blended Space for Heritage StorytellingEffective
Presented at the British 2014 HCI conference by Brian O’Keefe, lead experience architect
This presentation explores the role of Blending Theory as a framework to aid in design decisions while deploying mobile experiences for heritage storytelling. Blending Theory provides a structured way of thinking about how digital and physical spaces can be brought together to create new experiences in blended spaces. In this presentation, we describe the development of an app that aims to enhance the visitor experience to a heritage destination in New York State. We show how the blended spaces framework was used to guide the development of the app and provide evaluation data that highlights the effective UX that resulted. Heritage stories and augmented digital characters are used to guide a visitor from one point of interest to another, providing an engaging user experience.
Using Behavioral Modeling to Engage Customers Throughout the Decision-Making ...Effective
Presented at Integrated Marketing Week 2014
Richard Warnaka, manager of UX, Cabela's
Shane Johnston, lead experience planner, EffectiveUI
As retailers look to understand their customers, they often turn to tools like market segmentation and personas to better understand the different types of user groups within their target market. But this approach often overlooks the different stages a consumer goes through in making purchasing decisions.
Behavioral Modeling seeks to construct a universal representation of behavior: information is collected on the context, social structure, previous experience and emotion of a behavior.
This session explores why this approach was invaluable for Cabela’s, where – working together with EffectiveUI – the company uncovered the different stages its customers went through as they shopped. By understanding these various phases of decision-making, the company identified some new opportunities to provide meaningful engagement during the process to help guide customers’ decisions.
During the session, we will cover:
• How to conduct effective behavioral research
• Turning behavioral models into actionable design
• Key lessons learned throughout the process
Liferay and Water For People: From Data to InformationEffective
Presented by Steve Clement, senior Java developer, at Liferay Symposium 2013.
Water For People, an international nonprofit organization dedicated to supporting improved access to water and sanitation systems and services in developing countries, was looking for a way to track and hone the progress it is making toward solving the water and sanitation crisis via its programs.
EffectiveUI was enlisted to create this new platform – called Re-Imagine Reporting – and selected Liferay as the backbone. This session, led by Steve Clement, Sr. Java Developer at EffectiveUI, will demonstrate how his team innovated on Liferay to build a new and transparent way for Water For People to manage data, improve outcomes, and prove its efficacy to stakeholders. Topics will include data import via Documents and Media all the way through to the final visualization using AJAX IPC calls and structured content, focusing on how they leveraged Liferay to roll up the data from the lowest geographical level up to a global view.
Michael Salamon, User Experience Practice Lead for EffectiveUI, on the fundamentals of creating engaging user experiences, as presented at E2 Boston (June 2013).
UX is a combination of science and art, but it doesn't need to be as complicated as it seems. If you follow these rules, you can immediately improve the experience your users have with your product.
Watch the presentation on our YouTube channel:
http://www.slideshare.net/effectiveui/making-mobile-meaningful-ny-2013
Presented by Anthony Franco, president and founder
The art of creating mobile experiences that gain adoption and integrate with your digital ecosystem.
• How to develop a mobile strategy that integrates business, user and technology needs
• What mobile insights Forrester Research and EffectiveUI uncovered in their upcoming Technology Adoption Profile
• How to leverage your existing technology platforms for mobile development, while addressing security issues and other constraints
• What questions to ask and answer to arrive at the right mobile feature set for your users
• What other companies have done wrong, and right, to encourage mobile adoption
Experience Driven Development - Future Insights Live 2013Effective
"Experience-Driven Development & Contract First Development" presented by EffectiveUI's Ryan McGinty and SuAnne Hall at Future Insights Live 2013.
Experience-Driven Development is a user-centered, top-down development methodology that puts the needs of the user first, even above system needs. When developing solutions from scratch and using this approach, the layers of the stack are designed from the user interface backward to the persistence layer. However, in the real-world, you often aren't starting from scratch and have to develop against pre-existing solutions and take a Contract-First approach.
This session provides tools and tips for both approaches, specifically how to meet the needs of the user as well as prevent your project and budget from turning into a raging inferno.
You'll learn:
- How Contract-First Development can reconcile discrepancies between the user's needs and system capabilities.
- How to decompose a wireframe into software contracts.
- How to be part of the experience design solution rather than saying, "No, we can't get there from here".
- How to use modern Javascript Frameworks, like Backbone, to build amazing experiences while adhering to software contracts.
EffectiveUI’s team on the ground provides a daily recap of SXSW Interactive 2013 in Austin, March 7-11, 2013. Sunday featured a special event at SXSW, GoodxGlobal, dedicated to the local and global power of social good, technology and entrepreneurship. Here's EffectiveUI's recap of one of the GoodxGlobal panels, "Tech Powering Effectiveness," with Rebecca Flavin (EffectiveUI), Ned Breslin (Water For People), and Eric Stowe (Splash).
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...Effective
Presented by Anthony Franco, president and co-founder at Forrester's Application Development & Delivery Forum 2012
IT and marketing departments often collide when it comes building solutions, but in the end it’s the technology evaluation that can have the greatest impact on user experience. Through real-world examples and best practices, Anthony Franco, president, EffectiveUI, shares the tools and know-how needed to evaluate technology using UX-focused criteria.
This session will answer the following questions:
• What are the UX factors I need to consider when evaluating technology solutions?
• How can I best communicate tech requirements for UX and functionality of a solution to my marketing counterparts?
• How can a focus on UX up front save time and budget down the road?
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Flex 3 Deep Dive
1. A Deep Dive into the
Flex 3 Framework
Joshua Jamison
EffectiveUI
www.effectiveui.com
January 30th, 2009
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
2. Introductions
Who am I?
Joshua Jamison
Software Architect at EffectiveUI
Develop on Flex / Ruby / Java / Android / JavaFX
Who are you?
Assumptions:
You know some Flex
You want to know more Flex
You know how to get things done with Flex, but not how to make the most of the Flex
Framework
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
3. What will we talk about today?
Several topics that help you maximize Flex’s power
Things many beginner - intermediate developers don’t know a lot about
Data Binding
Style manager
Collections
System Manager
For each of these, I’ll discuss:
What it is
How it affects you
Best ways to use it
Common mistakes to avoid
It’ll start simple, and get deeper as we go
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
4. Data Binding
®
4
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
5. The Problem
Need a way to sync views with changing data
®
5
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
6. The Scenario
Scenario: A value object with some text that should be displayed on a label
®
6
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
7. Roll-my-own solution
I have a VO that contains some text I need to display on the screen
public class BoringVO1 {
public var _text : String;
}
®
7
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
8. Roll-my-own solution
How will I know when the text eld on this object changes? I’ll have it dispatch
events.
[Event(name=”textChanged”), type=”flash.events.Event”]
public class BoringVO1 extends EventDispatcher {
private var _text : String;
public function set text( value : String ) : void {
_text = value;
this.dispatchEvent( new Event(“textChanged”) );
}
}
®
8
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
9. Roll-my-own solution
In the view, I’ll listen for those events:
private var _vo : BoringVO1;
public function set vo( value : BoringVO1 ) : void {
_vo = value;
_vo.addEventListener( “textChanged”, this.setMyText )
}
public function setMyText() {
theLabel.text = value;
}
<mx:Label id=”theLabel”/>
®
9
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
10. Roll-my-own solution
Ugh. Annoying. Too much code for so simple a task.
®
10
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
11. Flex’s solution: data binding
Data binding is a contract between two objects: one promises to dispatch events
when its data changes, and another promises to listen to those changes and update
itself
Got this de nition from Michael Labriola’s fantastic data binding talk at 360|Flex San Jose, “Diving in the
Data Binding Waters”
Contrary to popular belief, it isn’t magic: it’s events!
®
11
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
12. Flex’s solution: data binding
Mark the object and its property as [Bindable], use curly braces, and away you go.
The VO!
public class BoringVO1 {
[Bindable]
public var text : String;
}
The app!
[Bindable]
public var vo : BoringVO1;
<mx:Label id=”theLabel” text=”{vo.text}”/>
®
12
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
13. The Basic Idea
A property of a component changes
The property’s component res off an event indicating that the property changed
Other components listen for this event, recognize that a needed value has changed,
and update themselves with the new value
Bindings also re once on initialization, so that initial values are set correctly
®
13
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
14. MXML Example (with curly braces), binding to a property
To bind to a property, simply put a reference to the property in curly braces:
<mx:Label text=”{anObject.text}”/>
The referenced data must be marked as bindable: give it [Bindable] metadata
If it isn’t marked as [Bindable], you’ll get a warning from the compiler...
“Data binding will not be able to detect assignments...”
...and the binding won’t work.
A warning!
®
14
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
15. Metadata
What is it?
Metadata is information that tells the compiler how components are used in a Flex application.
Various kinds: [ArrayElementType], [DefaultProperty], [Deprecated], [Effect], [Embed]...
[Bindable] metadata tells the compiler to generate code to dispatch events when the property or
properties marked [Bindable] are changed, so that other objects binding to that data will update
accordingly.
Why is it needed?
Remember all of the event dispatching and listening from the roll-my-own example?
The [Bindable] metadata tells the compiler to dispatch all of those events when objects or their
properties change.
®
15
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
16. Metadata
Where should [Bindable] metadata be placed?
Before a public class de nition
Makes all public properties, public getters/setters available as binding sources
Before a public, protected, or private property de ned as a variable
Makes that property available as a data binding source
Before a public, protected, or private property de ned as a getter/setter
Makes that property available as a data binding source
Components declared in MXML are automatically set as [Bindable] in the compiler-generated
Actionscript, as long as they have an id set
What is the syntax?
[Bindable] or [Bindable(event=“eventTypeToWhichInterestedComponentsShouldRespond”)]
If no event type is given, by default an event named “propertyChange”, of type PropertyChangeEvent is
dispatched
®
16
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
17. Metadata
Why use a custom event type?
It’s more efficient than using the default PropertyChangeEvent
More on this later
Who dispatches the custom event?
When no custom event type is speci ed:
Default PropertyChangeEvent is dispatched automatically
Example: DefaultEventFiring.mxml
When a custom event type is speci ed:
No PropertyChangeEvents are dispatched
Custom event types are not dispatched automatically
Must dispatch custom events explicitly
Example: CustomEventFiring2.mxml
®
17
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
18. MXML Example (with curly braces), binding to a function
Functions can be used as a source for data binding
Must be marked with appropriate metadata: [Bindable(event=”eventType”)]
When do bindings to functions execute?
Whenever the event type listed in the [Bindable(event=”eventType”)] metadata is dispatched
Example: DataBinding6.mxml
Whenever one of the bindable arguments passed in to the function changes
Code automatically generated to execute the binding whenever one of the function’s passed-in
bindable arguments changes
Compiler will throw a warning when non-bindable arguments are passed in to the argument list of a
bound function (and the binding won’t work, either)
On initialization
®
18
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
19. MXML Example (with curly braces), binding to XML data
Can bind directly to XML data
XML does not dispatch change events when nodes are edited, so views may not update correctly
XMLListCollection is the class of choice to use as an XML data provider
Provides sorting and ltering methods
Ensures views get updated when XML nodes are edited
®
19
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
20. MXML Example: using <Binding> tag
The MXML <Binding> tag accomplishes the same thing as curly braces
Allows you to bind multiple sources to a single destination
Can place a concatenated Actionscript expression in curly braces in the source
property of a <Binding> tag
Example: BindingTag.mxml
®
20
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
21. What does the generated code buy you?
Brevity
Lots of error handling
Binding to expressions
Compiler generates code to evaluate the expression placed in curly braces when particular events are
red off; makes it very easy to bind to complex expressions
<mx:Label text=”{a.toString() + b.toString() + “: “ + (c/d).toString}/>
Chains
Binding to property chains happens easily, too:
<mx:Label text=”{this.childA.propertyB.childC.widgetD.text}”/>
When childA, propertyB, childC, or widgetD changes, the label’s text updates appropriately
All of the event listeners needed to make this happen are created for you in the generated code
All of the properties in the chain must be [Bindable] in order for this to work correctly
®
21
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
22. Binding in Actionscript: bindProperty() and bindSetter()
Bindings can be created in Actionscript code, too
Use mx.binding.utils.BindingUtils
Two important static methods on the BindingUtils class
bindProperty() sets a destination property when a source property or property chain changes
Takes a destination object, a destination property, a source object, and a source property chain
(remember to make all elements in the source property chain [Bindable])
You can use bindProperty() to set a property that has a setter
bindSetter() calls a handler function() when a source property or property chain changes
Takes a handler function, a source object, and a source property chain
Since handler functions re when bindSetter is rst called; be sure to check for nulls
Handler function receives, as a parameter, the new value of the source’s property chain
®
22
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
23. Common problem: performance in Cairngorm
Too many bindable elds on the model doesn’t perform well!
Why?
Every time one of the properties on the model changes, the model dispatches a PropertyChangeEvent
Any component binding to any property on the model listen for PropertyChangeEvents dispatched from
the model
Examines the event to see which property the PropertyChangeEvent is for; disregards if not relevant
If the model has a lot of elds, this is a huge amount of unnecessary work
Solution? Custom event types
Listening components now only receive the particular event type dispatched for the property in
question
®
23
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
24. Common problem: two-way binding
Problem: two elds should update each other
Simple solution: Create two bindings, one in each direction.
Flex makes sure that an in nite loop won’t occur
MXML solution: TwoWayMXML.mxml
Actionscript solution: TwoWayActionscript.mxml
There’s a shortcut for this coming in Gumbo (Flex 4)...
Curly braces
<mx:TextInput id=” rstInput”/>
<mx:TextInput id=”secondInput” text=”@{ rstInput.text}”/>
Binding tags
<mx:Binding twoWay=”true” ...
Check out the Gumbo spec:
http://opensource.adobe.com/wiki/display/ exsdk/Two-way+Data+Binding
®
24
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
25. StyleManager
®
25
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
26. StyleManager: Styling 101
“Styles” differ from “Properties” in the way they are set, maintained, and accessed in
your application
Ways to set styles:
In MXML, they look just like properties:
<mx:Label text=quot;woot! WTF FTW!quot; color=quot;0x00ff00quot; width=quot;100quot;/>
In Actionscript, they must be set through the style manager:
var label : Label = new Label();
label.text = quot;woot! WTF FTW!quot;;
label.setStyle(quot;colorquot;, quot;0x00ff00quot;);
Why is it more complex in ActionScript?
®
26
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
27. StyleManager: Styling 101
Styles are inheritable
Styles must propagate to their children, and their children’s children, and sometimes their children’s
children’s children, forever and ever.
This task requires some management
The ex team built a class to do just that, and creatively named it the Style Manager.
The StyleManager serves as the storehouse for all of this information and makes it
available to other components.
®
27
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
28. StyleManager: Styling 101
Every time a style is set, the framework has to keep track of:
Any parent styles this over-rides
Any children who are affected
Flex adds/removes styles through proto chaining
Style properties are stored in the proto chains - not as properties on the objects themselves
proto chains are outside of the scope of our discussion, but it’s a really interesting topic to learn more
about.
®
28
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
29. Style Precedence
Global, Type, Class, Attribute
*Image courtesy Juan Sanchez and Andy McIntosh
®
29
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
30. Adding styles to components in AS3
To add styles to individual components, use UIComponent.getStyle and setStyle
getStyle is cheap - it just reads the style information
setStyle is expensive - it has to traverse the entire style tree and re-calculate inheritance.
These methods inherently make use of the StyleManager
These should satisfy your styling needs on a component level
®
30
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
31. Using StyleManager to manage Assets
You can embed assets through the StyleManager
Advantages:
Avoid cluttering your component code with Embed statements
Keep all external resource paths in a single place
Manage resources that might be used in more than one part of your app
.icons{
wrenchIcon: Embed('images/wrench.png');
searchIcon: Embed('images/search.png');
loginIcon: Embed('images/login.png');
}
<mx:Button
icon=quot;{StyleManager.getStyleDeclaration('.icons').getStyle('wrenchIcon')}quot;
label=quot;Customizequot;
/>
®
31
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
32. Using the StyleManager
Other things you can do with the StyleManager:
Make changes to existing styles
Useful for programmatically re-themeing at runtime for a con gurator
StyleManager.getStyleDeclaration(selector);
StyleManager.setStyleDeclaration(selector, CSSSelector, update);
Clear existing styles
StyleManager.clearStyleDeclaration(selector, update)
De ne whether your styles in uence other components
StyleManager.registerParentSizeInvalidatingStyle(styleName:String)
StyleManager.registerParentDisplayListInvalidatingStyle(styleName)
Register aliases for color names
“blue” instead of 0x0000ff
StyleManager.registerColorName(colorName, colorValue);
Load styles from a swf at runtime
StyleManager.loadStyleDeclarations(...);
®
32
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
33. Load style declarations at runtime
Uses different CSS les for the different themes
Load the style declarations from a pre-compiled swf
The core of the functionality:
private function changeCSS( panelTitle:String, name:String ):void {
StyleManager.loadStyleDeclarations( name, true );
}
®
33
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
34. Example: swap styles from a SWF at runtime
Example courtesy of Juan Sanchez and Andy McIntosh
®
34
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
35. Example: swap styles from a SWF at runtime
Example courtesy of Juan Sanchez and Andy McIntosh
®
35
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
36. Example: clearing and restoring styles
Same example as before, but a few new buttons / handlers:
public function unloadRed():void{
StyleManager.unloadStyleDeclarations('Red.swf');
}
// Code to restore the default 'Halo' button
public function restoreDefaults():void{
StyleManager.setStyleDeclaration('Button', defaultButtonStyle, true);
}
private var defaultButtonStyle : CSSStyleDeclaration;
public function onComplete():void{
defaultButtonStyle = StyleManager.getStyleDeclaration('Button');
}
...
<mx:Button label=quot;Go Red!quot; click=quot;loadRed()quot;/>
<mx:Button label=quot;Go Blue!quot; click=quot;loadBlue()quot;/>
<mx:Button label=quot;Clearquot; click=quot;clearStyles()quot;/>
<mx:Button label=quot;Restorequot; click=quot;restoreDefaults()quot;/>
<mx:Button label=quot;Unload Redquot; click=quot;unloadRed()quot;/>
®
36
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
37. StyleManager demo:
ThemeSwap
http://www.scalenine.com/samples/themeSwapper/themeSwap.html
®
37
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
38. In case it doesn’t work live: “Obsidian” theme
®
38
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
39. In case it doesn’t work live: iTunes 7 Theme
®
39
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
40. In case it doesn’t work live: Windows Vista theme
®
40
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
41. More info?
Creating Visual Experiences with Flex 3.0, by Juan Sanchez and Andy McIntosh
Still valid in Flex 4.0!
ScaleNine! Scale....ten?
®
41
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
42. Collections
®
42
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
43. What is a collection?
Data comes in many formats
Objects
Arrays
XML
There are many different kinds of view components
Crossing all of the view components with all of the different types of data
representations would yield an unmanageable number of classes
Need a common way to use any data as the source for any view component
This is where mx.collections.* shines
®
43
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
44. Why do we need collections?
Collections:
Abstract the format of the data from the display component
Ensure components are updated when data changes
Provide consistent operations to use on data
Provide sorted views of data
Provide ltered views
(Reasons taken from the online ex documentation at www.adobe.com)
®
44
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
45. So, what are collections really?
Classes that implement IList, ICollectionView
IList is an interface that contains that make it easy to work with linear data
ICollectionView is an interface that makes it easy to work with hierarchical data
ArrayCollection & XMLListCollection are the main ones you’ll use
These actually extend ListCollectionView, which implements IList and ICollectionView
®
45
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
46. IList
Interface for working with linear data
Interesting methods:
addItem
addItemAt
getItemAt
getItemIndex
removeAll
removeItemAt
setItemAt
®
46
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
47. ICollectionView
Interface for sorting, ltering, and interacting with linear and hierarchical data
Interesting properties
sort
lterFunction
Interesting methods
contains
createCursor
®
47
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
48. ListCollectionView
Implements IList
Implements ICollectionView
Consequently, components extending ListCollectionView can be used anywhere an
IList or an ICollectionView is expected
Is the base class for ArrayCollecton, XMListCollection
®
48
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
49. ArrayCollection, XMLListCollection
The two classes in the Flex framework that inherit from ListCollectionView
ArrayCollection
Uses an array as its data source
Good for linear data
XMLListCollection
Uses an XMLList as its data source
XMLList is a list of one or more XML objects
Good for hierarchical data
®
49
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
50. Where are collections useful?
Various classes can all use collection objects as their data source; these are called
“data provider components”:
ButtonBar
ColorPicker
ComboBox
DataGrid
DateField
HorizontalList
LinkBar
List
Menu
MenuBar
PopUpMenuButton
Tree
etc.
®
50
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
51. Review: why do we need collections?
Collections:
1. Abstract the format of the data from the display component
2. Ensure components are updated when data changes
3. Provide consistent operations to use on data
4. Provide sorted views of data
5. Provide ltered views
®
51
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
52. 1. Abstract the data format
The <mx:TileList> can accept many different types of data sources, including an
ArrayCollection and an XMLListCollection
The component can swap between different collections without a problem
Example: AbstractDataFormat.mxml
®
52
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
53. 2. Update views when data changes
One of the main reasons to use collections is so that when the data contained by the
collection changes, views update accordingly
Collections re off CollectionChange events when their items change; views listen for
these events and refresh themselves accordingly
When passing in non-collection objects as data providers, you may not see the view
update immediately
Flex wraps the passed in “raw” objects (e.g., Array or XML) in collection objects; this lets you use your raw
data directly.
However, changes made directly to those raw objects may not force the views to update
Example: UpdateTheViews.mxml
®
53
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
54. 3. Consistent data manipulation operations
Both ArrayCollection and XMLListCollection inherit from ListCollectionView
This makes it easy to edit data in a consistent way, regardless of which type of data is
being used for the data provider
Square brackets [] (Don’t use these - they’re involved in a Flash Player bug regarding loading sub-
applications; use getItemAt() intead)
getItemAt()
removeItemAt()
addItem()
®
54
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
55. 4. Sorted views
Collections provide a mechanism to sort the view of the data without changing the
underlying data itself
ListCollectionView’s sort property:
type = Sort
sort. elds should be an array of SortField objects, which describe how to perform the sort
Call refresh() on the collection object after assigning it a sort object
Underlying data does not change
Example: SortingViews.mxml
®
55
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
56. 5. Filtered views
Collections also offer an easy way to lter data
Simply set the lterFunction property on the collection to a function of the form:
function theFilterFunction( item : Object ) : Boolean {}
The function should return true on the object if it should be included in the ltered view of the data
Example: SortingViews.mxml
®
56
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
57. Hierarchical Data
Representing hierarchical data in XML is trivial, since XML itself is natively
hierarchical:
<Foods>
<Nuts>
<Nut>Peanut</Nut>
</Nuts>
</Foods>
Object graphs can be used, too
Example: ObjectHierarchy.mxml
Put the child objects in the “children” eld of the object
®
57
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
58. Cursors
Classes used to navigate through collection objects
Provide convenient, consistent ways to access data in collections
Initialize to the rst element in the collection
Cursors allow:
Movement through data (forward, back)
Searching (only if the collection is sorted)
Bookmarks
Data manipulation (addition, removal)
Great for navigating and searching through data
They respect sorts (even though the underlying data isn’t actually sorted, cursor will
behave like it is)
They have an optimized nd method
Handy for paging through long results sets
®
58
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
59. Common Problem: Manipulating a view component
immediately after changing the data provider
Setting the dataProvider property on a component such as a Tree requires that it
validate its properties and layout; it may need to add or remove children based on
the changes
Attempting to manipulate the view component immediately after setting the
dataProvider (i.e., on the next line of code) can cause runtime errors because the
component has not yet validated its properties and layout
To get around this problem, call validateNow() on the view component immediately
after setting the dataProvider
This forces the component to validate its properties and layout and redraw itself if
necessary
Only do this when necessary; there’s a performance hit
®
59
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
60. Common Problem: Not seeing expected changes in the view
If the objects stored in a collection are not [Bindable], the view will not be able to
detect when they have changed
In these instances, after updating an item in the collection, call the itemUpdated
method on the collection, letting it know that its data has changed
®
60
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
61. SystemManager
®
61
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
62. SystemManager: overview
“Root” of the Flex swf
First class that is instantiated
Controls and coordinates the initialization of the application
Instantiates and displays the pre-loader
Instantiates Application and adds it to the display list
Manages layers of children for popups (sorta), cursors, and tooltips
Switches focus between top-level items like the above list
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
63. SystemManager: 2 frame swf
Flex apps currently publish to a 2 frame SWF
1st frame (small): SystemManager, Preloader, DownloadProgressBar, helper classes.
2nd frame (probably big): The rest of the framework, your application, embedded assets
SystemManager
Flex Framework
Preloader
DownloadProgressBar
Application code
HelperClasses
Embedded Assets
RSLs
Frame 1 Frame 2
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
64. SystemManager: 2 frame walkthrough
SystemManager
Frame 1 streams in, plays
Preloader
SystemManager is created
DownloadProgressBar
SystemManager takes over - creates Preloader
HelperClasses
Preloader tracks the rest of the bytes streaming in,
provides updates to SystemManager
Once all bytes for frame 2 are streamed in, frame 2
plays
Frame 1
®
64
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
65. SystemManager: 2 frame walkthrough
Frame 2 plays
SystemManager instantiates Application,
sets Application.systemManager to itself
Flex Framework Application initializes itself, emits
CreationComplete
Application code SystemManager adds Application to the
DisplayList, hands control over to
Application / LayoutManager
Embedded Assets applicationComplete event is dispatched,
and your app is ready to go
RSLs
Frame 2
®
65
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
66. SystemManager: what is it good for?
Dispatches browser-resize events
Detecting if assets have been embedded
Fonts, for example. If the font isn’t embedded, use a different font.
SystemManager.embeddedFontList;
Displaying your own preloader
and...
®
66
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
67. SystemManager: what else is it good for?
Getting a reference to the root object
SystemManager.stage
Flash converts have probably spent some time looking for this
Monitoring keyboard and mouse activity
Manipulate multiple pop-ups, cursors, or tool-tips from their parent
®
67
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
68. SystemManager Pitfalls: Multiple Child Lists
PopUp windows added through PopUpManager.addPopUp or createPopUp do not go on the
SystemManager.popupChildren list by default - they go on the normal Application child list.
This list is displayed above the Alert child list and toolTipChildList
To add them there, pass the constant PopUpManagerChildList.POPUP as the fourth parameter to the
add or create methods on PopUpManager
PopUpManager.createPopUp(this, TestPopUp,false, PopUpManagerChildList.POPUP);
cursorChildren are on top of everything, then popupChildren, then toolTipChildren, then the regular old
application children.
application children
toolTipChildren
popupChildren
cursorChildren
®
68
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
69. SystemManager Pitfalls: The Root
The system manager tries to own “_root”
May manipulate the root object in ways you’re not expecting in Flash
This makes ash / ex integration frustrating at times
I’m not going to go into this more, but be aware of it
®
69
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
70. Resources
Michael Labriola’s 2008 360|Flex San Jose talk about Data Binding: “Diving in the Data
Binding Waters” (http://www.on ex.org/ted/2008/08/diving-in-data-binding-waters-
with.php)
Flex 3 Cookbook (Joshua Noble & Todd Anderson; O’Reilly)
Creating Visual Experiences in Flex 3.0 (Juan Sanchez and Andy McIntosh; Addison-
Wesley)
Programming Flex 2, Programming Flex 3 (Cha c Kazoun, Joey Lott; O’Reilly)
Learning Flex 3 (Alaric Cole; O’Reilly)
Online Flex documentation
API: http://livedocs.adobe.com/ ex/3/langref/index.html
Docs: http://livedocs.adobe.com/ ex/3/html/
®
70
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
71. Thank you!
Joshua Jamison
joshua.jamison@effectiveui.com
twitter: cephus
brightkite: cephus
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved.