A la hora de desarrollar aplicaciones con Xamarin.Forms el rendimiento suele ser un factor a tener en cuenta. En Xamarin.Forms, ¿sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los Bindings al rendimiento y como tratarlos?, ¿qué debemos hacer para optimizar el trabajo con imágenes?, ¿ListView o CollectionView?, ¿y qué ocurre con Shell? A estas y otras preguntas habituales de rendimiento daremos solución, con datos y pruebas en forma de sencillos consejos a tener en cuenta a la hora de desarrollar una aplicación con Xamarin.Forms.
Hexagonal architecture with Spring Boot [EPAM Java online conference]Mikalai Alimenkou
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
El documento presenta las mejores prácticas para el desarrollo de aplicaciones móviles multiplataforma usando Xamarin Forms. Se discuten temas como interfaz de usuario, experiencia de usuario, mantenimiento, seguridad y rendimiento. Se proveen ejemplos de uso de grids, estilos, iconos, adaptación a diferentes resoluciones y más.
Introduction to the Qt State Machine Framework using Qt 6ICS
The Qt State Machine Framework provides a practical mechanism to implement a GUI application as a state chart. Using Qt 6, this webinar will:
-Provide an intro to the framework
-Explore its features and its API in both C++ and QML
-Illustrate with an example how it can simplify development where the user interface is written in QML
This webinar is for any developer who wants to implement robust user interfaces.
Pradip Shah discusses using Bitbucket Pipelines to build continuous integration and delivery pipelines for WordPress and Magento applications. Bitbucket Pipelines uses Docker containers to run build steps defined in a YAML configuration file. Key benefits include reducing the cost of testing with containerization, and the ability to automate deployments through continuous delivery. The presentation provides an example Magento 2 pipeline and discusses concepts like separating concerns between Docker images and pipeline steps.
A step towards the way you write the code in React application.In this presentation, I have given introduction about React hooks. Why we need it in our react applications and describe about the two most commonly used React Hooks API useState and useEffect. I also given the links of code snippets I added in these slides
State management in react applications (Statecharts)Tomáš Drenčák
This document discusses state management in React applications and introduces statecharts as an alternative approach. It covers the limitations of approaches like Flux and Redux, such as global action handling registries and initialization/cleanup issues. Statecharts provide hierarchical and parallel states that can help solve these problems. The document demonstrates how statecharts can be used to structure stores, handle actions polymorphically, and implement common patterns like pages and lists in a more organized way.
The document provides an overview and agenda for a presentation on SwiftUI. The presentation covers declarative programming with SwiftUI, compares SwiftUI and UIKit, demonstrates navigation, data binding, and integrating SwiftUI and UIKit. It also discusses SwiftUI concepts like modifiers, previews, and requirements to use SwiftUI. The presentation aims to provide a deep dive into SwiftUI fundamentals and capabilities.
Hexagonal architecture with Spring Boot [EPAM Java online conference]Mikalai Alimenkou
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
El documento presenta las mejores prácticas para el desarrollo de aplicaciones móviles multiplataforma usando Xamarin Forms. Se discuten temas como interfaz de usuario, experiencia de usuario, mantenimiento, seguridad y rendimiento. Se proveen ejemplos de uso de grids, estilos, iconos, adaptación a diferentes resoluciones y más.
Introduction to the Qt State Machine Framework using Qt 6ICS
The Qt State Machine Framework provides a practical mechanism to implement a GUI application as a state chart. Using Qt 6, this webinar will:
-Provide an intro to the framework
-Explore its features and its API in both C++ and QML
-Illustrate with an example how it can simplify development where the user interface is written in QML
This webinar is for any developer who wants to implement robust user interfaces.
Pradip Shah discusses using Bitbucket Pipelines to build continuous integration and delivery pipelines for WordPress and Magento applications. Bitbucket Pipelines uses Docker containers to run build steps defined in a YAML configuration file. Key benefits include reducing the cost of testing with containerization, and the ability to automate deployments through continuous delivery. The presentation provides an example Magento 2 pipeline and discusses concepts like separating concerns between Docker images and pipeline steps.
A step towards the way you write the code in React application.In this presentation, I have given introduction about React hooks. Why we need it in our react applications and describe about the two most commonly used React Hooks API useState and useEffect. I also given the links of code snippets I added in these slides
State management in react applications (Statecharts)Tomáš Drenčák
This document discusses state management in React applications and introduces statecharts as an alternative approach. It covers the limitations of approaches like Flux and Redux, such as global action handling registries and initialization/cleanup issues. Statecharts provide hierarchical and parallel states that can help solve these problems. The document demonstrates how statecharts can be used to structure stores, handle actions polymorphically, and implement common patterns like pages and lists in a more organized way.
The document provides an overview and agenda for a presentation on SwiftUI. The presentation covers declarative programming with SwiftUI, compares SwiftUI and UIKit, demonstrates navigation, data binding, and integrating SwiftUI and UIKit. It also discusses SwiftUI concepts like modifiers, previews, and requirements to use SwiftUI. The presentation aims to provide a deep dive into SwiftUI fundamentals and capabilities.
The document discusses dependency injection with Spring. It defines dependency injection as a design pattern that allows removing hardcoded dependencies and changing them at runtime. It presents different types of dependency injection like setter and constructor injection. It demonstrates how to configure dependency injection with Spring using XML configuration files or annotations and inject dependencies into objects. Benefits of dependency injection include easier testing, improved reusability, and cleaner code.
The document discusses microservices architecture and how microservices can be developed and deployed using MuleSoft's Anypoint Platform. It describes the typical anatomy of a microservice including business logic, connectivity logic, and an API contract. It provides examples of different types of microservices and integration patterns. It also outlines MuleSoft tools that can be used to develop microservices using a service-oriented approach and deploy them to private data centers or public clouds like CloudHub.
Presented by,
Ms. Nandana S V
Team Lead, Sr Software Engineer, Livares Technologies
Facade design pattern
Facade is a part of Gang of Four design pattern (23 others).
As the name suggests, it means the face of the building.
The people walking past the road can only see this glass face of the building.
They do not know anything about it, the wiring, the pipes and other complexities.
It hides all the complexities of the building and displays a friendly face.
Facade design pattern
Same goes for the Facade Design Pattern. It hides the complexities of the system and provides an interface to the client from where the client can access the system.
This document discusses Angular Material, an UI component library for building attractive and consistent Angular applications. It provides modern components that work across devices and are optimized for Angular. To use Angular Material, install it via the Angular CLI and add Material components to templates. It includes features like typography, themes, and schematics to generate common components.
vPC allows links connected to two Nexus switches to appear as a single port channel to a third device. It provides advantages like eliminating STP blocked ports, using all available uplink bandwidth, and fast convergence upon failures. Configuring vPC involves the vPC peer switches, peer link, domain, and member ports. vPC avoids loops at the data plane layer. It can be used within a single data center for active-active server connectivity or between two data centers to extend VLANs across sites at layer 2. Object tracking allows vPC to modify its state based on peer link states.
Spring MVC 3.0 Framework
Objective:
1. Introduce Spring MVC Module
2. Learn about Spring MVC Components (Dispatcher, Handler mapping, Controller, View Resolver, View)
Slides:
1. What Is Spring?
2. Why use Spring?
3. By the way, just what is MVC?
4. MVC Architecture
5. Spring MVC Architecture
7. Spring MVC Components
8. DispatcherServlet
9. DispatcherServlet Architecture.........
.........................................................
Presentación sobre arquitectura hexagonal sobre Android y Symfony presentada en la jornada de #OpenBiko por 540. Se analiza la arquitectura y se describe de que manera nos está ayudando en el desarrollo de nuestros proyectos.
Lightning Web Components are a JavaScript programming model for building web applications and interfaces that is built on the best of web standards.
Any front-end web developer can get started with LWC and leverage custom elements, and JavaScript APIs to create modern apps and experiences that are fully aware of Salesforce data and processes.
This document discusses the facade design pattern. The facade pattern provides a simplified interface to a more complex subsystem. It decouples the subsystem from the client and makes the subsystem easier to use. A facade acts as a front-facing interface that hides the underlying complexities of the subsystem and delegates client requests to appropriate subsystem classes. This reduces dependencies between subsystems and promotes loose coupling. The facade pattern is useful for layering subsystems and simplifying access to them through a single interface.
Continuous Deployment Practices, with Production, Test and Development Enviro...Amazon Web Services
With AWS companies now have the ability to develop and run their applications with speed and flexibility like never before. Working with an infrastructure that can be 100% API driven enables businesses to use lean methodologies and realize these benefits. This in turn leads to greater success for those who make use of these practices. In this session we'll talk about some key concepts and design patterns for Continuous Deployment and Continuous Integration, two elements of lean development of applications and infrastructures.
The document discusses the VIPER architecture, which aims to improve testability of iOS apps by separating concerns into distinct layers. It describes the main components of VIPER - View, Interactor, Presenter, Entity, and Router. The Interactor contains business logic, the Presenter prepares data for the View, and the Router handles navigation. By separating concerns, VIPER allows for easier testing and maintenance of large iOS codebases. It advocates designing the app as independent, reusable modules that conform to the single responsibility principle.
The document discusses how to achieve clean code and good performance in React applications. It emphasizes naming conventions, single responsibility principles, and best practices to write clean code. For performance, it recommends code splitting, tree shaking, lazy loading, and optimizing re-renders. It also discusses tools like React Dev Tools and React Profiler to diagnose performance issues and optimize updates and rendering.
Vistazo a React (la librería JavaScript para UI), la arquitectura Flux y React Native. Se cuentan los fundamentos del "One Direction Data Flow": Como pensar como React y Flux y una introducción a React Native: la versión de React que permite crear aplicaciones Android y iOS usando JavaScript
Mejorando el UX de nuestras aplicaciones móviles en Xamarin FormsCharlin Agramonte
This document discusses ways to improve the user experience (UX) of Xamarin Forms mobile applications. It provides code snippets and links to resources for implementing features like splash screens, onboarding, login forms, payment forms, profile screens, loading indicators, handling internet connectivity, and more. General tips are also given for alerts, empty states, permissions, translations, dark mode, and making the UI adaptive. The document encourages learning more about UX from sources like tutorials, UI kits, and by exploring example applications.
Every app needs to navigate from page to page and pass data around too! That is where Xamarin.Forms Shell can help by simplifying the your application structure, provide URL navigation, passing parameters, and even deep linking! Join in for a full session with James Montemagno on how to setup your app and get navigating.
Quick introduction to Spring Framework. Following are the topics I have included in this presentations:
1. Introduction to Software Framework
2. What is Spring Framework?
3. Spring Framework History
4. Spring Framework Architecture
5. Why Spring?
6. Spring Framework Ecosystem
This document compares the JavaScript frameworks React and Vue. It provides an introduction and history of both, explaining that React was created by Facebook in 2013 and Vue was created by Evan You in 2014. It then demonstrates building a shopping list application without and with React/Vue to showcase their core features like virtual DOM, components, updating and passing events, two-way data binding, and state management. Statistics on GitHub stars, NPM trends, Google Trends, and performance benchmarks are presented, followed by a Q&A section.
Washington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOpsBig Compass
Catherine Wills, a MuleSoft consultant from Big Compass, presented on setting up a CI/CD pipeline with MuleSoft and Azure DevOps. She discussed key concepts like CI/CD, DevOps, branching strategies, and components of Azure DevOps like boards, repos, pipelines, and releases. The presentation included a demo of creating a sample CI/CD pipeline using Mule runtime, Anypoint Studio, Azure DevOps, and deployment targets like CloudHub and Runtime Fabric. Attendees could participate in trivia questions during the presentation.
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
Este documento proporciona información sobre Xamarin.Forms y cómo mejorar el rendimiento de las aplicaciones desarrolladas con este framework. Se discuten temas como el uso adecuado de layouts, views, listviews y bindings para optimizar el rendimiento. También se mencionan técnicas como fast renderers, custom renderers y behaviors que pueden acelerar el desempeño de las aplicaciones. Finalmente, el documento brinda consejos adicionales como el uso de AOT, la optimización de recursos y el caching de imágenes.
¿Sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los bindings al rendimiento y como tratarlos?, ¿rendimiento en listados?, ¿fast renderers?. A todas esas preguntas y a otras tantas, intentaremos dar solución en esta sesión.
The document discusses dependency injection with Spring. It defines dependency injection as a design pattern that allows removing hardcoded dependencies and changing them at runtime. It presents different types of dependency injection like setter and constructor injection. It demonstrates how to configure dependency injection with Spring using XML configuration files or annotations and inject dependencies into objects. Benefits of dependency injection include easier testing, improved reusability, and cleaner code.
The document discusses microservices architecture and how microservices can be developed and deployed using MuleSoft's Anypoint Platform. It describes the typical anatomy of a microservice including business logic, connectivity logic, and an API contract. It provides examples of different types of microservices and integration patterns. It also outlines MuleSoft tools that can be used to develop microservices using a service-oriented approach and deploy them to private data centers or public clouds like CloudHub.
Presented by,
Ms. Nandana S V
Team Lead, Sr Software Engineer, Livares Technologies
Facade design pattern
Facade is a part of Gang of Four design pattern (23 others).
As the name suggests, it means the face of the building.
The people walking past the road can only see this glass face of the building.
They do not know anything about it, the wiring, the pipes and other complexities.
It hides all the complexities of the building and displays a friendly face.
Facade design pattern
Same goes for the Facade Design Pattern. It hides the complexities of the system and provides an interface to the client from where the client can access the system.
This document discusses Angular Material, an UI component library for building attractive and consistent Angular applications. It provides modern components that work across devices and are optimized for Angular. To use Angular Material, install it via the Angular CLI and add Material components to templates. It includes features like typography, themes, and schematics to generate common components.
vPC allows links connected to two Nexus switches to appear as a single port channel to a third device. It provides advantages like eliminating STP blocked ports, using all available uplink bandwidth, and fast convergence upon failures. Configuring vPC involves the vPC peer switches, peer link, domain, and member ports. vPC avoids loops at the data plane layer. It can be used within a single data center for active-active server connectivity or between two data centers to extend VLANs across sites at layer 2. Object tracking allows vPC to modify its state based on peer link states.
Spring MVC 3.0 Framework
Objective:
1. Introduce Spring MVC Module
2. Learn about Spring MVC Components (Dispatcher, Handler mapping, Controller, View Resolver, View)
Slides:
1. What Is Spring?
2. Why use Spring?
3. By the way, just what is MVC?
4. MVC Architecture
5. Spring MVC Architecture
7. Spring MVC Components
8. DispatcherServlet
9. DispatcherServlet Architecture.........
.........................................................
Presentación sobre arquitectura hexagonal sobre Android y Symfony presentada en la jornada de #OpenBiko por 540. Se analiza la arquitectura y se describe de que manera nos está ayudando en el desarrollo de nuestros proyectos.
Lightning Web Components are a JavaScript programming model for building web applications and interfaces that is built on the best of web standards.
Any front-end web developer can get started with LWC and leverage custom elements, and JavaScript APIs to create modern apps and experiences that are fully aware of Salesforce data and processes.
This document discusses the facade design pattern. The facade pattern provides a simplified interface to a more complex subsystem. It decouples the subsystem from the client and makes the subsystem easier to use. A facade acts as a front-facing interface that hides the underlying complexities of the subsystem and delegates client requests to appropriate subsystem classes. This reduces dependencies between subsystems and promotes loose coupling. The facade pattern is useful for layering subsystems and simplifying access to them through a single interface.
Continuous Deployment Practices, with Production, Test and Development Enviro...Amazon Web Services
With AWS companies now have the ability to develop and run their applications with speed and flexibility like never before. Working with an infrastructure that can be 100% API driven enables businesses to use lean methodologies and realize these benefits. This in turn leads to greater success for those who make use of these practices. In this session we'll talk about some key concepts and design patterns for Continuous Deployment and Continuous Integration, two elements of lean development of applications and infrastructures.
The document discusses the VIPER architecture, which aims to improve testability of iOS apps by separating concerns into distinct layers. It describes the main components of VIPER - View, Interactor, Presenter, Entity, and Router. The Interactor contains business logic, the Presenter prepares data for the View, and the Router handles navigation. By separating concerns, VIPER allows for easier testing and maintenance of large iOS codebases. It advocates designing the app as independent, reusable modules that conform to the single responsibility principle.
The document discusses how to achieve clean code and good performance in React applications. It emphasizes naming conventions, single responsibility principles, and best practices to write clean code. For performance, it recommends code splitting, tree shaking, lazy loading, and optimizing re-renders. It also discusses tools like React Dev Tools and React Profiler to diagnose performance issues and optimize updates and rendering.
Vistazo a React (la librería JavaScript para UI), la arquitectura Flux y React Native. Se cuentan los fundamentos del "One Direction Data Flow": Como pensar como React y Flux y una introducción a React Native: la versión de React que permite crear aplicaciones Android y iOS usando JavaScript
Mejorando el UX de nuestras aplicaciones móviles en Xamarin FormsCharlin Agramonte
This document discusses ways to improve the user experience (UX) of Xamarin Forms mobile applications. It provides code snippets and links to resources for implementing features like splash screens, onboarding, login forms, payment forms, profile screens, loading indicators, handling internet connectivity, and more. General tips are also given for alerts, empty states, permissions, translations, dark mode, and making the UI adaptive. The document encourages learning more about UX from sources like tutorials, UI kits, and by exploring example applications.
Every app needs to navigate from page to page and pass data around too! That is where Xamarin.Forms Shell can help by simplifying the your application structure, provide URL navigation, passing parameters, and even deep linking! Join in for a full session with James Montemagno on how to setup your app and get navigating.
Quick introduction to Spring Framework. Following are the topics I have included in this presentations:
1. Introduction to Software Framework
2. What is Spring Framework?
3. Spring Framework History
4. Spring Framework Architecture
5. Why Spring?
6. Spring Framework Ecosystem
This document compares the JavaScript frameworks React and Vue. It provides an introduction and history of both, explaining that React was created by Facebook in 2013 and Vue was created by Evan You in 2014. It then demonstrates building a shopping list application without and with React/Vue to showcase their core features like virtual DOM, components, updating and passing events, two-way data binding, and state management. Statistics on GitHub stars, NPM trends, Google Trends, and performance benchmarks are presented, followed by a Q&A section.
Washington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOpsBig Compass
Catherine Wills, a MuleSoft consultant from Big Compass, presented on setting up a CI/CD pipeline with MuleSoft and Azure DevOps. She discussed key concepts like CI/CD, DevOps, branching strategies, and components of Azure DevOps like boards, repos, pipelines, and releases. The presentation included a demo of creating a sample CI/CD pipeline using Mule runtime, Anypoint Studio, Azure DevOps, and deployment targets like CloudHub and Runtime Fabric. Attendees could participate in trivia questions during the presentation.
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
Este documento proporciona información sobre Xamarin.Forms y cómo mejorar el rendimiento de las aplicaciones desarrolladas con este framework. Se discuten temas como el uso adecuado de layouts, views, listviews y bindings para optimizar el rendimiento. También se mencionan técnicas como fast renderers, custom renderers y behaviors que pueden acelerar el desempeño de las aplicaciones. Finalmente, el documento brinda consejos adicionales como el uso de AOT, la optimización de recursos y el caching de imágenes.
¿Sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los bindings al rendimiento y como tratarlos?, ¿rendimiento en listados?, ¿fast renderers?. A todas esas preguntas y a otras tantas, intentaremos dar solución en esta sesión.
Segunda charla de la Xamarin4Party de Sevilla, en la que hablo de las novedades de Xamarin.Forms 2.0 y 2.1 pre
Las demos de todos los puntos se pueden descargar en:
http://www.github.com/josueyeray/xamarinforms2
Este documento presenta una aplicación de ejemplo en Java Server Faces (JSF) que permite personalizar los colores de un currículum vitae. La aplicación incluye páginas para personalizar los colores, mostrar mensajes de error si los colores seleccionados son iguales, y previsualizar el CV con los colores y datos seleccionados. El documento explica cada archivo JSP que compone la aplicación y muestra fragmentos de código para ilustrar el uso de etiquetas JSF.
Este documento presenta una introducción a los patrones de diseño de software. Explica que un patrón describe un problema común de diseño y una solución probada a ese problema en un contexto particular. Luego, describe algunos patrones comunes como el patrón MVC y cómo separa la lógica de la interfaz de usuario del modelo de datos subyacente. Finalmente, discute el patrón de fábrica y cómo permite crear objetos de manera flexible sin acoplar las clases concretas.
En esta sesión os contaremos la visión de React para el desarrollo de aplicaciones web desde el punto de vista de un desarrollador de ASP.NET que tiene que aprender a trabajar con estas nuevas tecnologías.
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
En esta sesión os contaremos la visión de React para el desarrollo de aplicaciones web desde el punto de vista de un desarrollador de ASP.NET que tiene que aprender a trabajar con estas nuevas tecnologías.
Buenas prácticas en el desarrollo para Android.
Consejos sobre:
- Organización del código
- Trucos en programación Java
- Reutilización
- Rendimiento
- Compartición de datos
- Usabilidad
- Etc.
Este documento explica el framework Struts mediante un ejemplo práctico de creación de una aplicación web para gestionar calzados. Se describe la estructura de Struts basada en el patrón MVC, y se explican los pasos para crear el modelo, el controlador y la vista en la aplicación de ejemplo.
Este documento describe Backbone.js, una librería JavaScript que permite organizar mejor el código del lado cliente. Proporciona modelos, colecciones y vistas con capacidad de manejo de eventos. Se usa comúnmente para aplicaciones de una sola página donde el lado cliente interactúa con un servidor RESTful.
El documento describe la experiencia de Mixplay.tv al desarrollar aplicaciones utilizando Silverlight. Mixplay.tv experimentó problemas al desarrollar para múltiples plataformas con tecnologías tradicionales. Silverlight permitió el desarrollo multiplataforma sin recodificar y mejoró la colaboración entre desarrollo y diseño. Aunque Silverlight tuvo algunas limitaciones iniciales, ayudó a Mixplay.tv a crear interfaces más dinámicas y flexibles.
Este documento presenta las novedades y mejoras recientes en Xamarin.Forms y las herramientas de Xamarin. Entre las novedades se incluyen mejoras en las herramientas como Hot Reload y Hot Restart para reducir los tiempos de iteración, la introducción de Shell para simplificar la navegación, y nuevos controles como CarouselView y CollectionView. También se discuten las mejoras planificadas como soporte para GIFs, gradientes y nuevos controles.
Aplicacion mvc entity_framework_login_membershipJose B Flores P
Este documento describe el desarrollo de una aplicación web utilizando Entity Framework, Visual Studio 2012 y SQL Server 2012. El objetivo general es desarrollar una aplicación que permita el acceso a datos de forma orientada a objetos. Se explica el contexto y la problemática, y se establecen objetivos específicos relacionados con el aprendizaje de Entity Framework y el desarrollo de la aplicación. Finalmente, se espera que el proyecto permita adquirir experiencia en el uso de frameworks para el desarrollo de aplicaciones orientadas a datos.
Este documento describe los Lightning Components de Salesforce. Los Lightning Components son componentes reutilizables que permiten construir aplicaciones frontend con tecnología JavaScript. Ofrecen una alternativa a Visualforce para crear experiencias de usuario más interactivas e inmersivas aprovechando el modelo de componentes. Los Lightning Components pueden insertarse en aplicaciones de Salesforce como en sitios externos y son altamente configurables. Sin embargo, su desarrollo es más complejo que Visualforce debido al uso de eventos asíncronos y al framework Aura subyacente.
Este documento describe la arquitectura Java Web utilizando el patrón MVC. Explica que el controlador administra la navegación, el modelo almacena los datos y la vista presenta los datos. Luego introduce los principales frameworks para implementar MVC como Struts, describiendo cómo funciona y cómo se configura para crear formularios, acciones y validaciones. Finalmente, explica las librerías de etiquetas de Struts para generar la interfaz de usuario.
Este documento discute los diferentes componentes que afectan el rendimiento de las aplicaciones web que usan JavaScript, incluyendo el motor JavaScript, objetos del modelo, XMLHttpRequest, el navegador, DOM, CSS y renderizado. Explica que mejorar solo una capa como JavaScript no es suficiente, ya que todo el stack del navegador afecta el rendimiento. Recomienda equilibrar el rendimiento en cada capa para lograr aplicaciones eficientes.
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
Seminario sobre Spring Roo y monitorización con Spring Insight organizado por Paradigma Tecnologico y Javahispano, impartido en Madrid el 14 de octubre de 2010 por Federico Caro
ZanPHP es un framework PHP de código abierto que facilita el desarrollo rápido de aplicaciones web siguiendo el patrón MVC. Usa patrones de diseño y mejores prácticas para producir código escalable y de alta calidad. Proporciona características como integración con bases de datos, controladores, vistas y modelos, así como documentación y proyectos de ejemplo.
Planificando las bases de una aplicación windows phoneSorey García
El documento describe la importancia de planificar las "Vistas Modelo" como base para una aplicación Windows Phone. Las Vistas Modelo son clases que enlazan las vistas (páginas XAML) a los datos y permiten separar la lógica de negocio de la interfaz. El autor ilustra cómo planificar las Vistas Modelo para una aplicación de productividad usando diagramas de flujo y clases de modelo. Luego muestra cómo implementar las Vistas Modelo planificadas usando Blend para generar datos de muestra y enlazar las páginas a los
Similar a DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms (20)
R y Python con Power BI, la ciencia y el análisis de datos, juntosPlain Concepts
R y Python son lenguajes muy populares hoy en día especialmente para científicos de datos, que los utilizan para prospección, tratamiento y minería de datos y, Power BI es una de las herramientas que más está creciendo en cuanto a utilización y aceptación en el sector de inteligencia de negocios y análisis de datos. La sesión cubre, a través de demos, los puntos en los que ambos enfoques se combinan para sacar mejor partido a los datos con los que contamos. Según sea el caso, vamos a preferir gestionar nuestras tareas desde el mundo de estadísticas y gráficos ofrecido por lenguajes R y Python, el mundo más encaminado al análisis de negocio gestionado con Power BI, o ambos mundos.
Video kills the radio star: e-mail is crap and needed disruptionPlain Concepts
El documento discute los desafíos de seguridad y privacidad con el correo electrónico a lo largo del tiempo, proponiendo numerosas soluciones técnicas que finalmente resultaron insuficientes para proteger a los usuarios. Se sugiere que el correo electrónico ya no es adecuado para la comunicación personal y que se necesitan nuevos enfoques centrados en el usuario, como MyPublicInbox, para abordar estos problemas.
De la misma manera que la llegada del software ha transformado todo tipo de empresas e industrias a lo largo de los últimos 20 años, la Inteligencia Artificial está empezando a redefinir todo tipo de escenarios empresariales. Descubre en esta charla los conceptos básicos de la Inteligencia artificial y descubre los casos de uso más apropiados para tu tipo de empresa. Aprende a realizar el cambio organizacional y cultural necesario para potenciar tu negocio mediante IA.
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesPlain Concepts
Rare genetic diseases are very challenging to diagnose, with the average child waiting for diagnosis for 5 years. Next generation genetic sequencing data may hold the key to diagnosis, however analysis can become a paramount task with multiple factors affecting conclusions. Dx29, an AI-assisted platform facilitates this task, allowing the physician to drive the analysis. Dx29 is a free platform developed by Foudation29, in close collaboration with academic groups.
¿Qué es real? Cuando la IA intenta engañar al ojo humanoPlain Concepts
Hoy en día es difícil no hablar de la Inteligencia Artificial y pensar en cómo se ha aplicado para resolver tareas difíciles y repetitivas para el ser humano. Pero en los últimos años, gracias a la llegada de las Redes Generativas Adversariales (GANs), la IA adoptó capacidades creativas que le permiten generar información artificial. Es la era de los Deepfakes, en la que puedes poner tu cara al actor de tu película favorita o ser felicitado por el presidente de los Estados Unidos. En esta charla, veremos gran parte de estas capacidades adquiridas por la IA, algunos ejemplos, y pondremos a prueba nuestro ojo para comprobar si estamos preparados para detectar que es real y que no.
Inteligencia artificial para detectar el cáncer de mamaPlain Concepts
Este documento describe cómo la inteligencia artificial puede ayudar en la detección del cáncer de mama mediante la clasificación de mamografías. Se propone un modelo de red neuronal convolucional para clasificar las vistas de las mamografías y asignarles un nivel BI-RADS. El modelo se entrenó con datos reales y obtuvo resultados comparables o mejores que los oncólogos, pudiendo ser una herramienta útil para la detección temprana de esta enfermedad.
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?Plain Concepts
¿Conoces el impacto real que la IA está teniendo en las empresas y cuáles son los retos a los que se han enfrentado para implementarla con éxito? En esta charla veremos cómo la IA impacta en las diferentes industrias y el retorno de la inversión obtenido. También veremos cuáles son los principales retos a los que se han enfrentado las empresas para incorporar la IA como factor estratégico y las diferentes formas de abordarlos para obtener una implantación firme y estable que acelere el retorno de la inversión.
Gracias a los Cognitive Services ahora podemos añadir inteligencia a nuestras apps de una manera sencilla. La combinación de estos servicios abren un mundo nuevo de posibilidades, por lo que durante esta charla veremos una breve introducción a los distintos servicios para pasar directamente a verlos en acción en aplicaciones y situaciones reales. Se trata de una charla introductoria en la que haremos demos y veremos cómo podemos utilizar estos servicios en nuestro código.
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...Plain Concepts
La guerra por los datos de las familias en los hogares acaba de arrancar, altavoces inteligentes, luces conectadas, etc. En esta sesión veremos como simples datos agregados pueden convertirse en hábitos de gran valor a través de los algoritmos.
AI is the new buzzword, everybody is talking about it and how it will change and influence our lives. When we talk about AI we talk about machines learning from data, exactly like a child is learning from his/her family or the experiences he/she makes. Humans though, while they grow up, can develop biases. Could this happen to an AI too? Starting from a real story, what would happen if a machine learning algorithm learns from a toys catalog?
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Plain Concepts
En lo sitios web de eCommerce, la recomendación de productos es clave para poder exponer el catálogo completo al usuario. Una estrategia de recomendación sin datos de usuario es la llamada Recomendación basada en contenidos. En ésta se tienen en cuenta las características de los productos para buscar similitudes. En esta charla veremos diferentes formas de calcular la similitud de unos productos concretos, recetas, basadas en Deep Learning y cómo hemos implementado estos algoritmos en Azure. Finalmente, veremos qué problemas hemos detectado y cómo los estamos solucionando.
Revolucionando la experiencia de cliente con Big Data e IAPlain Concepts
El documento describe cómo la convergencia de grandes datos, inteligencia artificial y análisis avanzado puede mejorar radicalmente la experiencia del cliente. Muchas organizaciones ya están desarrollando casos de uso de alto impacto basados en datos como parte de su transformación. Este viaje requiere de socios de confianza con las capacidades y experiencia necesarias para avanzar más rápido y de manera más segura.
La idea de iniciar un primer proyecto de IA puede ser considerada a priori como una meta imposible, pero el grado de madurez actual de las tecnologías y los equipos permiten iniciarse sin mucha dificultad en un mundo que parece muy complejo. La experiencia de InfoJobs, dejando de banda los detalles mas técnicos, ilustra un caso de éxito tanto en el plano estratégico como de producto.
Recuperación de información para solicitantes de empleoPlain Concepts
Tratar de encontrar ofertas de trabajo que se ajusten a las habilidades de un buscador de empleo se ha convertido en un dolor de cabeza. La recuperación de información ha sido el método utilizado últimamente para ayudar en esta tarea. Con la inclusión de los algoritmos de aprendizaje profundo, la recuperación de información es ahora más poderosa que nunca. Permite el análisis de grandes conjuntos de documentos, haciendo que la predicción sea más precisa, incluso superando las capacidades humanas. En la presente ponencia presentamos las técnicas más avanzadas para la recuperación de información con un aprendizaje profundo y las aplicamos a la tarea de emparejar los currículums de los demandantes de empleo o a búsquedas específicas con las ofertas de empleo existentes más adecuadas.
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgePlain Concepts
¿Te has preguntado alguna vez que podríamos hacer con toda la telemetría que se recoge en fábricas y empresas? Durante esta sesión veremos como aplicar distintas técnicas de Inteligencia Artificial en el sector industrial para mejorar la seguridad y el rendimiento de nuestras instalaciones. Además, veremos una demo en vivo donde podremos observar como nuestro dispositivo IoT puede analizar los datos que recibe y ser capaz de predecir posibles fallos futuros en distintos componentes.
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptPlain Concepts
This document provides an overview of Azure Cognitive Services presented by Sherry List. It begins with introductions and then covers key topics including artificial intelligence, machine learning, machine learning techniques like deep learning and clustering. It discusses how machine learning works with data, patterns, algorithms, models and training. Finally, it provides a detailed breakdown of the various cognitive services for decision, speech, language, search and vision with examples of APIs within each category. It also demonstrates how to use cognitive services by creating an account, calling REST APIs and parsing JSON responses.
¿Conoces TypeScript? ¿Estás trabajando con Vue? ¡Vamos a por el siguiente nivel! En esta charla vas a aprender como crear aplicaciones reales y escalables utilizando lo mejor de TypeScript y Vue, con super herramientas como Nuxt, Inversify, Vuex etc. Estar continuamente actualizando a tu equipo puede ayudar a tu producto, al mismo equipo y a los proyectos en los que trabajáis.
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...Plain Concepts
En esta charla veremos como podemos utilizar nuestros dispositivos (Raspberry PI) para adelantarnos a posibles fallos que puedan ocurrir en un motor de un avión. Explicaremos como se ha realizado el proceso de entrenamiento y como podemos ejecutar las predicciones en nuestro dispositivo utilizando IoT Edge.
El camino a las Cloud Native Apps - IntroductionPlain Concepts
The document discusses serverless computing and Azure Functions. It provides examples of how to model common patterns like function chaining, fan-out/fan-in, and human interaction with timeouts using Durable Functions. Durable Functions allow writing long-running orchestrations as single functions and handling state management automatically. This simplifies complex workflows that would otherwise require managing state across many functions.
El camino a las Cloud Native Apps - Azure AIPlain Concepts
This document discusses different Azure AI services:
- Cognitive Services which provide pre-built machine learning algorithms to solve AI problems with little development needed. It highlights Computer Vision, Text Analytics, and other services.
- Azure Databricks which is an Apache Spark-based analytics platform optimized for Azure and designed for collaboration between data teams. It emphasizes easy infrastructure for big data and full Azure connectivity.
- Azure ML Workspace which is a tool to ease the entire machine learning process with experiment tracking, model versioning, predictive image creation and deployment.
para programadores y desarrolladores de inteligencia artificial y machine learning, como se automatiza una cadena de valor o cadena de valor gracias a la teoría por Manuel Diaz @manuelmakemoney
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
4. Oops!. Problema con
el rendimiento
•Normalmente, el rendimiento es un punto
que se suele tener en cuenta “al final” y “si es
necesario”.
•El objetivo de esta sesión sera que te quedes
con consejos, ideas y factores a tener en
cuenta para que la preocupación por el
rendimiento se traslade durante todo el
desarrollo.
6. Suma y sigue. No hay
“magia”.
• Vamos a ver una sucesión de ideas y
consejos relacionadas con Xamarin.Forms.
de los puntos vistos os daran pequeñas
mejoras en el rendimiento. No hay “líneas
mágicas”, hablamos de un “suma y sigue”.
• Cambio a cambio si se consiguen
resultados.
7. Xamarin Classic
Base de código C# compartido
100% de acceso a APIs nativas
Alto rendimiento
iOS C# UI Windows C# UIAndroid C# UI
Código compartido C#
Interfaces dependientes de código
nativo
8. Xamarin.Forms
Más código compartido. UI XAML o C#
Data Binding & MVVM
Abstracciones (Navegación, etc.)
iOS C# UI Windows C# UIAndroid C# UI
Código compartido C#
Rendimiento < Xamarin.Classic
UI Compartida
9. A tener en cuenta...
•Hay que tener en cuenta la capa de abstracción.
•No se puede desarrollar absolutamente todo sin pensar en que
hay “debajo”.
•Hay que utilizar los controles adecuados en cada caso.
•El árbol visual debe ser parte de nuestra responsabilidad.
•A veces es necesario código nativo en forma de Custom
Renderers o Effects.
Las claves.
10. Step
VS 2017
15.8
VS 2019 16.0 Diferencia
Primera Build 01:04.20 00:50.13 -21.95%
Incremental Build
(Cambios en
XAML)
00:10.62 00:07.47 -29.66%
Despliegue
(Cambios en
XAML)
00:09.03 00:04.44 -50.83%
SmartHotel Reference App
12. Compilación de XAML
Si defines la interfaz de usuario de la aplicación Xamarin.Forms con XAML tienes la
opción de utilizar XamlCompilationOptions.
Cuenta con dos valores:
• Compile.
• Acelera la carga de elementos visuales.
• Reduce el tamaño del paquete.
• La compilación (AOT) es más larga.
• Skip.
• Valor por defecto para mantener retocompatibilidad.
• No hay validación en tiempo de ejecución de XAML.
XAMLC
13. Compilación de XAML
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
Detalles:
• TipCalc en Android.
• JIT.
• Tiempo calculado
con
InitializeComponent()
.
• Tiempo medio de 5
medidas.
• Oneplus 6.
15. Bindings y MVVM
• Binding es una características incluida en Xamarin.Forms.
• Permite crear asociaciones entre una Fuente y un destino.
• Permite aplicar MVVM desacoplando Modelo y Vista
interponiendo una capa intermedia, la ViewModel.
Propiedad pública
BindableProperty
Source
TargetBinding
OneWay
TwoWay
OneWayToSource
16. Bindings, el funcionamiento
public abstract class BindableObject : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
//...
}
“No enlaces cosas que se pueden establecer de forma estática”
Jason Smith - Evolve 2016
17. Bindings
Detalles:
• El sistema de Bindings es
rápido, pero tiene un
costo en el rendimiento.
• Los errores de enlace a
datos tienen impacto en el
rendimiento.
• En ocasiones, evitar el
enlace a datos ayuda a
mejorar el rendimiento
(Ejemplo: listado con celda
personalizada).
19. Fast Renderers
Hablamos de cambios realizados en Xamarin.Forms con el
objetivo de reducir a mínimos el número de operaciones y
cálculos a realizar para renderizar el control y gestionar su
tamaño y posición.
¿Qué aporta?
20. Pre Fast Renderers (Label)
OnLayout();
OnLayout();
ViewRenderer
MeasureAndLayout();
ViewRenderer
OnLayout();
ViewElementRenderer
UpdateLayout();
LabelRenderer
22. Fast Renderers
Detalles:
• Tiempo de incialización
y creación de la vista.
• Android.
• JIT.
• Tiempo tomado de 5
medidas.
• One Plus 6.
• Se usan por defecto en
Xamarin.Forms 4.0!
24. Images
Detalles:
• La opción más sencilla y directa
de mejorar la gestión de
imágenes es usando
FFImageLoading.
• GlideX tiene mejor rendimiento
que FFImageLoading en Android.
• Gracias a IImageSourceHandler
se puede personalizar que usar
para la gestión de ImageSource
en cada plataforma. Por ejemplo,
usar FFImageLoading en iOS y
GlideX en Android.
• Se esta trabajando activamente
en mejorar la gestión de
imágenes en Xamarin.Forms.
Reducción en un 15% de media
en el uso de memoria en la v4.0
en comparación a v3.6.
25. IImageSourceHandler
Desde Xamarin.Forms 2.3.5, tenemos la interfaz IImageSourceHandler. Permite implementar ImageSource en
la plataforma.
Las claves.
public class ImageSourceHandler : IImageSourceHandler
{
public Task<UIImage> LoadImageAsync(
ImageSource imageSource,
CancellationToken cancellationToken = new CancellationToken(),
float scale = 1)
{
return LoadUsingFFImageLoading(
imageSource, cancellationToken);
}
...
} ExportImageSourceHandler
28. Layout
• Un Layout representa un nodo en el árbol
visual.
• Un Layout cuenta con propiedades y eventos
que permiten definer su comportamiento.
• Es el responsible de gestionar la ubicación y el
tamaño de nodos secundarios.
• Ejemplos: StackLayout, Grid, etc.
29. El ciclo de vida de un Layout
La creación de un Layout en Xamarin.Forms pasa por dos
fases diferentes:
• Ciclo de invalidación: En el árbol visual, el ciclo de
invalidación es el proceso de notificación
recursivamente hacia el nodo padre.
• Ciclo de Layout: Tras invalidar, se procede a la
reorganización de elementos marcados como
“invalidados”.
32. Grid
El Grid organiza los elementos hijos en filas y columnas.
Permite crear estructuras complejas sin necesidad de grandes
anidaciones.
El tamaño de cada fila y columna es importante, y afecta al
rendimiento. Hay que cuidar la utilización de celdas y filas.
33. Consejos Grid
El Grid organiza los elementos hijos en filas y columnas.
La invalidación de una de las View hijas provoca la
invalidación en cadena del árbol visual de la rejilla.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button
Text="Button 1"/>
<Label
Grid.Row="1"
Text="Button 2"/>
</Grid>
34. Consejos Grid
El Grid puede organizar los elementos con tamaño
proporcional a la View. El Grid ignora cualquier notificación
de invalidación de sus hijos.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button
Text="Button 1"/>
<Button
Grid.Row="1"
Text="Button 2"/>
</Grid>
35. Consejos Grid
El Grid puede organizar los elementos con tamaño fijo. El
Grid ignora cualquier notificación de invalidación de sus
hijos.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
<RowDefinition Height="150"/>
</Grid.RowDefinitions>
<Button
Text="Button 1"/>
<Button
Grid.Row="1"
Text="Button 2"/>
</Grid>
36. StackLayout
El StackLayout organiza los elementos hijos una sóla
fila o columna.
Ideal para la creación sencilla y de forma rápida de
forma secuencial.
CUIDADO!, puede llevar a la anidación excesiva.
37. Consejos StackLayout
El StackLayout organiza los elementos hijos una sóla
fila o columna.
La invalidación de un View hijo provoca la
invalidación en cadena en el árbol visual hasta el
StackLayout.
<StackLayout>
<Button
Text="Button 1"/>
<Button
Text="Button 2"/>
</StackLayout>
38. RelativeLayout
El RelativeLayout organiza los elementos hijos en
base a relaciones entre los diferentes elementos y
el contenedor.
Ideal cuando el tamaño o el posicionamiento dbe
ser dinámico y adaptarse a diferentes condiciones.
Rendimiento bajo. Alto consume de CPU.
39. Layouts
Detalles:
• No uses un StackLayout para un
único hijo.
• No uses un Grid cuando el
StackLayout hace el trabajo.
• No uses varios StackLayout
cuando un Grid cumple.
• RelativeLayout tiene el peor
rendimiento. Alto consumo de
CPU.
• FlexLayout, no es el vencedor en
cuanto a rendimiento aunque
dada su flexibilidad y
rendimiento es una opción
altamente recomendada.
• En caso de posicionar pudiendo
usar posiciones absolutas,
AbsoluteLayout no tiene rival.
41. ListView
• Salto cualitativo con Xamarin.Forms 2.0 donde se
añadieron opciones como la reutilización de celdas.
• La reutilización de celdas viene definida por la propiedad
ListViewCachingStrategy que cuenta con dos posibles
valores:
• RecycleElement
• RetainElement
<ListView CachingStrategy="RecycleElement"/>
42. Consejos ListView
• En determinadas ocasiones se requiere contenido
adicional al ListView en la parte superior y/o inferior. Es
recomendable utilizar las propiedades HeaderTemplate y
FooterTemplate para ello.
• Envolver al control ListView en un ScrollView rompe la
virtualización!
44. Consejos ListView
• Se recomiendo utilizer IList<T> como ItemsSource en
lugar de IEnumerable.
• Si se utiliza RecycleElemement, se aumenta el
rendimiento eliminando el Binding de la celda y utilizano
OnBindingContextChanged.
• No uses un TableView si puedes utilizar un ListView.
45. • Soporta layouts Horizontal/Vertical
• Soporte a multiples columnas/filas de elementos
• Es como una versión moderna de ListView
• No es necesario usar Cells
• Se usan Views y DataTemplates
• Mejora considerable en el rendimiento.
https://github.com/xamarin/Xamarin.Forms/issues/3172
46. CollectionView
Detalles:
• Media de 5 medidas.
• La gestión de celdas es mucho
más eficiente en
CollectionView, es la clave.
• El consumo de memoria es
inferior al usar CollectionView
con respecto a ListView.
• Los tiempos necesarios para
renderizado de celdas, es más
óptimo en CollectionView.
• Tras medir también el tiempo
de arranque de la App, es
también ligeramente mejor en
CollectionView.
48. Actualmente, muchas aplicaciones se ven a nivel estético exactamente
igual en todas las plataformas. En Xamarin.Forms, para conseguir este
resultado, en ocasiones hacen falta Custom Renders o efectos (código
específico de plataforma) para conseguirlo.
Por ese motivo, llega una nueva opción para conseguir la misma interfaz
de usuario en diferentes plataformas sin necesidad de requerir tanto a
Custom Renders o efectos.
50. ¿Cómo usar Visual?
FormsMaterial.Init();
<ContentPage Visual=“Material”>
…
</ContentPage>
Los valores posibles de la propiedad Visual:
• Default : indica que la vista debe presentarse mediante el representador predeterminado.
• MatchParent : indica que la vista debe utilizar el representador mismo como su elemento primario directo.
• Material : indica que la vista debe representar con un procesador de material.
51. Visual
Detalles:
• Media de 5 medidas.
• Todos los renderers de Visual
son Fast Renderers.
• Los renderers de Visual tienen
un rendimiento general mejor
que los de por defecto (salvo el
Entry).
• La gestión de recursos
(eventos, dependencias, etc.)
es mejor en los renderers en
Visual, impacta en el consumo
de memoria. Mejor con Visual.
55. Facilita la creación de la estructura de la aplicación
• Un lugar común donde describir la estructura de la
aplicación.
• Servicio de navegación con deep linking.
• Gestión de búsquedas integradas.
56. • Mejor rendimiento
• Facilitar crear Layouts complejos
• Navegación con Flyout y pestañas
• URL routed navigation, deep linking
• Mejoras en la navegación, gestion de
navegar atrás
• Search handler
• Snackbar
• Bottom Sheet
• Floating Action Button
• Left Bar Button
• Screen segues
• Transiciones de páginas
• Nueva API de gestos
• Además de todo lo que ya era posible
con Xamarin.Forms antes
57. Shell
Detalles:
• Datos tomados de 5 medidas
en Android.
• Rendimiento mejor en iOS que
en Android.
• Shell tiene un consumo de
memoria medio más bajo.
• El tiempo de arranque es
ligeramente mejor en iOS y a
su ves ligeramente peor en
Android que sin usar Shell.
59. Startup
• La opción compilación AOT habilita la compilación Ahead Of Time de los
ensamblados. Cuando esta opción está habilitada, la sobrecarga de inicio
Just-In-Time (JIT) se minimiza al precompilar ensamblados antes del tiempo
de ejecución. El código nativo resultante se incluye en el paquete (APK)
junto con los ensamblados sin compilar. Esto da como resultado un tiempo
de inicio de la aplicación más reducido, pero a costa de tamaños APK más
grandes.
• A costa de tiempos de compilación más lentos, el compilador de
optimización de LLVM debe crear un código compilado más pequeño y
rápido.
60. Startup (tiempo de arranque)
Detalles:
• AOT reduce casi a la mitad el
tiempo de arranque!.
• AOT incrementa el tamaño del
paquete!.
• La optimización LLVM tiene un
ligero impacto en el tiempo de
arranque, aunque nos ayuda a
tener un paquete más ligero.
63. Peticiones Http
Detalles:
• La reutilización de HttpClient nos ayuda
a reducir drásticamente los tiempos.
Esto se debe a que segregará las cosas
de las que cada servidor puede
depender, como las cookies o
DefaultRequestHeaders.
• Un error común al trabajar con
HttpClient es descargar el contenido del
Json en una cadena. El problema es que
esto crea una cadena de todo su
documento JSON innecesariamente.
Impacta en el tiempo y la memoria a
utilizar. Usar Streams directamente.
• Usar GZIP siempre que sea posible.
• Usar Xamarin's Native
HttpMessageHandlers.
65. IoC
Detalles:
• Valor tomado de la media de 5
medidas.
• Aunque con limitaciones,
DependencyService de
Xamarin.Forms tiene un
rendimiento muy bueno.
• Entre las librerías más
utilizadas, TinyIoC o DryIoC
entre otras destaca como una
de las más rápidas.
66. Custom Renderers
protected override void OnElementChanged (ElementChangedEventArgs<NativeListView> e)
{
base.OnElementChanged (e);
if (Control == null) {
// Instantiate the native control
}
if (e.OldElement != null) {
// Unsubscribe from event handlers and cleanup any resources
}
if (e.NewElement != null) {
// Configure the control and subscribe to event handlers
}
}
67. Compresión de Layout
• Layout Compression permite indicar elementos con anidamiento
innecesario y optar a no crear layout. Con esta opción habilitada los layouts
se optimizarán en tiempo de compilación permitiendo obtener un mejor
rendimiento en tiempo de ejecución.
• Layout Compression elimina layouts encargados de gestionar aspectos
como gestos, etc. Si tu Layout utiliza las propiedades Rotation, Scale,
TranslationX o TranslationY (entre otras), no es un buen candidato.
<Grid
CompressedLayout.IsHeadless="true">
</Grid>
69. Recuerda!
• Muchos de los puntos vistos os daran
pequeñas mejoras en el rendimiento. No hay
“líneas mágicas”, hablamos de un “suma y
sigue”.
• Cambio a cambio si se consiguen resultados.
72. One more thing
Concurso.
Al final del evento habrá un concurso. ¡No te lo
pierdas!.
Entre todos los tweets del evento relacionados
con la charla, sortearemos una licencia de:
• LiveXAML www.livexaml.com
• Aurora Controls www.auroracontrols.app
• MFractor www.mfractor.com
73. Thanks and …
See you soon!
Thanks also to the sponsors.
Without whom this would not have been posible.