The document discusses using a centralized state dispatcher to manage state and user interface updates in Android applications. It proposes modeling application state as immutable value objects and dispatching state changes through a reactive stream. Presenters can subscribe to specific state changes and update their views accordingly. This decouples producers and consumers of state. The approach aims to make views only coupled to the dispatcher, not each other, and push updates rather than pull. Views can listen to the same state changes from the dispatcher to stay in sync. The dispatcher emits new state to all subscribers.
Cesar Valiente "Unidirectional architecture on Android with Kotlin"IT Event
The document discusses using a unidirectional data flow architecture on Android applications. It describes combining elements of Flux and Redux, including actions, reducers, a store, and dispatcher. Views dispatch actions that are reduced by reducers to update the store's state. The store then notifies subscribers like the controller-view. The approach aims to have unidirectional data flows with immutable states and no external dependencies. An example app called KUnidirectional is presented to demonstrate this architecture in practice using Kotlin and Android.
This document provides a step-by-step guide for building a React app. It outlines 5 steps: 1) Break the UI into a component hierarchy, 2) Build a static version with components, 3) Identify the minimal state needed, 4) Determine where state should live, 5) Add inverse data flow to support updating state from user input. The guide walks through applying these steps to build a product filtering table app, identifying the key components and how state would flow from parent to child and back again upon user interaction.
The State and Notification Broker provides APIs that allow developers to monitor over 100 system states from managed code, react to changes in those states, and create custom states. It provides a consistent model for accessing and managing system states without using P/Invoke. Developers can read states like battery level and be notified of changes to react to in their applications, such as disabling buttons when battery is low. The broker also allows applications to launch when a monitored state changes.
How We Built the Private AppExchange App (Apex, Visualforce, RWD)Salesforce Developers
The AppExchange and Success Community team built a brand new app this year: the Private AppExchange. Join us and learn how the team built this managed package, the choices we made and why. We will talk about the AppExchange Search Framework that all three of these products are built upon and we will talk about how we made a responsive UI that works on whatever device you choose.
How Sap Quickviewer Helps Air Products And Chemicals With Sarbanes Oxley Comp...wendlidl
The document discusses how Air Products uses SAP Quickviewer and SAP Query to help meet Sarbanes-Oxley compliance requirements by enabling validation of configured employee pay and benefit data. It provides a step-by-step guide to using Quickviewer to combine data from multiple system tables, converting the Quickviewer report into a SAP Query for end users, and transporting the query globally. This allows managers to approve changes and auditors to verify proper authorizations, helping Air Products pass audits.
Unidirectional Data Flow Architecture (Redux) in SwiftSeyhun AKYUREK
Redux, simply makes your application’s state in single store object. So firing an action from your application/in view’s lifecycle state changes and your reducers for that action generate a new state. In this slideshow I'm explaining how to implement ReSwift in IOS Applications
In this talk, I'm presenting an alternative approach to thinking about UI and navigation on iOS - one that is declarative and that I find easy to reason about in a big application. I did live coding and the link is on the last slide. Enjoy!
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
Cesar Valiente "Unidirectional architecture on Android with Kotlin"IT Event
The document discusses using a unidirectional data flow architecture on Android applications. It describes combining elements of Flux and Redux, including actions, reducers, a store, and dispatcher. Views dispatch actions that are reduced by reducers to update the store's state. The store then notifies subscribers like the controller-view. The approach aims to have unidirectional data flows with immutable states and no external dependencies. An example app called KUnidirectional is presented to demonstrate this architecture in practice using Kotlin and Android.
This document provides a step-by-step guide for building a React app. It outlines 5 steps: 1) Break the UI into a component hierarchy, 2) Build a static version with components, 3) Identify the minimal state needed, 4) Determine where state should live, 5) Add inverse data flow to support updating state from user input. The guide walks through applying these steps to build a product filtering table app, identifying the key components and how state would flow from parent to child and back again upon user interaction.
The State and Notification Broker provides APIs that allow developers to monitor over 100 system states from managed code, react to changes in those states, and create custom states. It provides a consistent model for accessing and managing system states without using P/Invoke. Developers can read states like battery level and be notified of changes to react to in their applications, such as disabling buttons when battery is low. The broker also allows applications to launch when a monitored state changes.
How We Built the Private AppExchange App (Apex, Visualforce, RWD)Salesforce Developers
The AppExchange and Success Community team built a brand new app this year: the Private AppExchange. Join us and learn how the team built this managed package, the choices we made and why. We will talk about the AppExchange Search Framework that all three of these products are built upon and we will talk about how we made a responsive UI that works on whatever device you choose.
How Sap Quickviewer Helps Air Products And Chemicals With Sarbanes Oxley Comp...wendlidl
The document discusses how Air Products uses SAP Quickviewer and SAP Query to help meet Sarbanes-Oxley compliance requirements by enabling validation of configured employee pay and benefit data. It provides a step-by-step guide to using Quickviewer to combine data from multiple system tables, converting the Quickviewer report into a SAP Query for end users, and transporting the query globally. This allows managers to approve changes and auditors to verify proper authorizations, helping Air Products pass audits.
Unidirectional Data Flow Architecture (Redux) in SwiftSeyhun AKYUREK
Redux, simply makes your application’s state in single store object. So firing an action from your application/in view’s lifecycle state changes and your reducers for that action generate a new state. In this slideshow I'm explaining how to implement ReSwift in IOS Applications
In this talk, I'm presenting an alternative approach to thinking about UI and navigation on iOS - one that is declarative and that I find easy to reason about in a big application. I did live coding and the link is on the last slide. Enjoy!
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
This document describes the VIP (View-Interactor-Presenter) architecture pattern for iOS app development. It explains the responsibilities of each component, including the View for displaying content, Interactor for handling business logic and data, Presenter for coordinating the view and interactor, and Router for navigation. The key benefits of VIP are good division of responsibilities between loosely coupled components, unidirectional data flow, simplicity, testability, and low dependency between layers. An example workflow for user registration is provided to demonstrate how user input events flow through the VIP components.
This document provides an overview of the tools and reports available through the SEMrush software. It describes SEMrush's organic research, advertising research, PLA research, domain vs domain comparison, charts, and other features. The main tools allow users to analyze a domain's organic keywords, paid keywords, backlinks, competitors and more. Reports provide rankings, traffic sources, and other metrics to understand search engine visibility and competition.
Ph d defense_Department of Information Technology, Uppsala University, SwedenSabesan Manivasakan
Querying Data Providing Web Services
Manivasakan Sabesan
Department of Information Technology
Uppsala University
Sweden.
Abstract
Web services are often used for search computing where data is retrieved from servers providing information of different kinds. Such data providing web services return a set of objects for a given set of parameters without any side effects. There is need to enable general and scalable search capabilities of data from data providing web services, which is the topic of this Thesis.
The Web Service MEDiator (WSMED) system automatically provides relational views of any data providing web service operations by reading the WSDL documents describing them. These views can be queried with SQL. Without any knowledge of the costs of executing specific web service operations the WSMED query processor automatically and adaptively finds an optimized parallel execution plan calling queried data providing web services.
For scalable execution of queries to data providing web services, an algebra operator PAP adaptively parallelizes calls in execution plans to web service operations until no significant performance improvement is measured, based on monitoring the flow from web service operations without any cost knowledge or extensive memory usage.
To comply with the Everything as a Service (XaaS) paradigm WSMED itself is implemented as a web service that provides web service operations to query and combine data from data providing web services. A web based demonstration of the WSMED web service provides general SQL queries to any data providing web service operations from a browser.
WSMED assumes that all queried data sources are available as web services. To make any data providing system into a data providing web service WSMED includes a subsystem, the web service generator, which generates and deploys the web service operations to access a data source. The WSMED web service itself is generated by the web service generator.
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)VMware Tanzu
The demands of fast incremental code development require a stable, safe, and continuous delivery pipeline that can get your code into the hands of your customers without delay. Put your continuous delivery pipeline on autopilot by automating and simplifying the workflow—continuous integration to production readiness—and by using an automated monitoring solution to prevent bad builds from impacting production.
This webinar will cover the steps to building an automated, monitored pipeline:
1. Modeling and visualizing your build and delivery process as a pipeline (defined as a single, declarative config file) using Concourse CI.
2. Leveraging integrations to trigger actions and share data, supporting functions like testing, collaboration, and monitoring.
3. Enhancing your end-to-end continuous delivery pipeline with contextual deployment event feeds to Dynatrace.
4. Adding automated, metrics-based quality gates between pre-production stages and an automatic post-production approval step, all with specifications defined in source control.
Attendees will learn how some of the unique capabilities of Concourse CI and Pivotal Cloud Foundry, coupled with Dynatrace’s software intelligence, can put your continuous delivery pipeline on autopilot and ensure safer production outcomes.
Presenters: James Ma, Senior Product Manager, Pivotal & Michael Villiger, Sr. Technical Partner Manager, Dynatrace
Reduxing UI: Borrowing the Best of Web to Make Android BetterChristina Lee
This talk was given at Realm on 3.31.16 and makes the case for looking to the web to find better mobile strategies. Also covers one example of a way you can take a web framework (Cycle.js) and port it to native.
This document provides an overview of financial statement analysis for healthcare organizations. It discusses various tools used for analysis, including horizontal analysis, vertical analysis, ratio analysis, and trend analysis. Horizontal analysis compares financial data over time, vertical analysis expresses figures as percentages of a total, ratio analysis examines relationships between figures, and trend analysis compares figures to a base year. The document also outlines common liquidity, profitability, activity, and capital structure ratios used in analysis and provides examples of applying various tools to sample financial statements.
Everything to Know About React Re-Rendering: A Comprehensive GuideBOSC Tech Labs
This blog will cover a comprehensive guide to React re-rendering, its components, and its types. You will get an overview of React components with an example.
This document discusses various types of financial statement analysis that can be used to analyze the financial performance and position of healthcare organizations. It covers horizontal analysis, vertical analysis, ratio analysis, and calculating specific ratios to evaluate an organization's liquidity, profitability, activity, and capital structure. The learning objectives are to analyze financial statements using these techniques and to calculate and interpret common liquidity, profit, activity, and capital structure ratios.
Making design decisions in React-based ClojureScript web applicationsFalko Riemenschneider
After the appearance of React in the browser landscape the community built numerous libraries like Om, Om Next, Reagent (used with or without Re-frame), Quiescent, Reacl and perhaps even more to make Reacts blessings available in ClojureScript. Some libraries clearly express their preferences about how a more complete frontend architecture should look like, and encourage us to add core.async, co-located queries, reactive programming or cursors to the mix.
Based on an understanding of the general problems to be solved within a single-page-application this talk will provide some design heuristics on how to make the right choices that add just enough complexity to your frontend.
About Basics of IBM Rational Performance Tester Tool.
It describes what is RPT? how to do a simple script in RPT.
And how to execute it?.
Its a brief idea about RPT
- Oracle Business Rules is a lightweight business rules product that is part of Oracle Fusion Middleware and can be used in SOA and BPM suites. It allows business processes to be more agile and align with changing business demands by acting as a central rules repository.
- The document demonstrates how to create a rule in Oracle Business Rules using JDeveloper to calculate student grades based on average marks and test it using various methods like a debugging function, the Enterprise Manager console, and SOAP UI web services calls.
- A decision table rule is created to return a grade based on comparing average marks to ranges in a bucketset. The rule can then be tested by passing sample data and evaluating the output.
Special thanks to Daniel Egan. This presentation provides a deeper dive into Windows Phone 7 for developers. Topics cover how you navigate in your applicaton, how to access Web Services, use JSON to move data, and how to push notifications.
The document discusses local versus global variables in JavaScript, noting that declaring variables with var makes them local and available only within the function, while declaring without var makes them global and available outside the function. It provides examples showing how local and global variables work differently depending on whether var is used or not when declaring the variable. The document aims to explain the difference between local and global variables and when it is better to use local variables over global ones.
Whitepaper: Measuring Engagement in Native AdvertisingMissy Steiner
Native advertising is relatively young compared to the paid
search and traditional display advertising markets which
means that the tools available to marketers to measure
the performance of their campaigns is immature. Marketers
are often forced to use click-through-rate (CTR) to
measure the performance of their campaign. In some
scenarios it makes sense to define a conversion goal and
measure conversion rate. However, this is not possible in
all scenarios.
1) The VP provided an overview of Intuit's Consumer Tax Group's performance in FY2014, noting good growth and market share gains in the US but room for improvement in Canada.
2) While progress was made innovating the product experience and customer service, further work is needed to improve the experience for returning and new users.
3) The FY2014 results marked a good start to a multi-year journey to fully deliver on the promise of innovating at every customer touchpoint.
ReqPro is a requirements management tool that allows teams to organize, prioritize, track, and control changing requirements. It provides several views and methods for working with requirements, including through requirement properties, Microsoft Word, and different types of views. Key features include creating and editing requirements, setting attributes and notes, and managing traceability between requirements through links, matrices, and trees.
This document provides steps to build a RESTful service using Oracle ADF Business Components (ADFBC). It describes how to create an ADF Fusion Web Application, connect to a database, generate business components and Java classes, add a custom method to invoke an Oracle API, create a REST resource, and test the RESTful service using Postman. The key steps are: 1) generating ADFBCs from tables, 2) adding a custom method to call an Oracle API, 3) creating a REST resource exposing the custom method, and 4) invoking the REST service using Postman to successfully process a transaction by calling the Oracle API.
Getting the service description (WSDL)
Configure Service Bus
Import Resources
Configure Business Service
Config ure the Credit Card Validation Proxy
Configure Message Flow(Validate & Report)
Adding a Pipeline Pair ->Add Stage ->Add Action(Reporting) ->Add Validate Action
Three years ago Store4, the little library that could, was released at KotlinConf'19. Store has been simplifying data loading on Android for close to a decade and was supercharged by being 100% Kotlin. Today we're here to talk about the next paradigm shift in data loading Store5 - a Kotlin Multiplatform solution for reading, writing and resolving data conflicts on any platform that Kotlin supports (Android, iOS, Web and Desktop). The Android community has embraced Store for close to a decade, Kotlin is making it possible to adopt the same patterns on other mobile platforms and beyond.
With the addition of support for updating remote sources, network resilience, pain free conflict resolution, and a highly extensible api - Store5 aims to make reading and writing data effortless on all Kotlin platforms. This talk will focus on Store5 foundational concepts and usage in production and at scale. We will be covering adopting KMP, applying Google's offline-first guiding principles beyond Android and how we hope to establish a seamless way for all apps, regardless of platform, to work with local and remote data. This talk is not to be missed for folks (like us) who have battle scars from years of working on hard to fix bugs in offline first applications.
Intro to GraphQL on Android with Apollo DroidconNYC 2017Mike Nakhimovich
Apollo-Android provides a strongly-typed, caching GraphQL client for Android that reduces the complexity of making GraphQL requests. It includes code generation that handles mapping GraphQL responses to Java models and builders for constructing GraphQL queries. The runtime client executes the operations and handles caching, reducing the need for custom networking, parsing, and storage code compared to REST. Apollo was developed by Shopify, New York Times, and AirBnb as an open source alternative to implementing GraphQL on Android with existing REST-based libraries and tools.
This document describes the VIP (View-Interactor-Presenter) architecture pattern for iOS app development. It explains the responsibilities of each component, including the View for displaying content, Interactor for handling business logic and data, Presenter for coordinating the view and interactor, and Router for navigation. The key benefits of VIP are good division of responsibilities between loosely coupled components, unidirectional data flow, simplicity, testability, and low dependency between layers. An example workflow for user registration is provided to demonstrate how user input events flow through the VIP components.
This document provides an overview of the tools and reports available through the SEMrush software. It describes SEMrush's organic research, advertising research, PLA research, domain vs domain comparison, charts, and other features. The main tools allow users to analyze a domain's organic keywords, paid keywords, backlinks, competitors and more. Reports provide rankings, traffic sources, and other metrics to understand search engine visibility and competition.
Ph d defense_Department of Information Technology, Uppsala University, SwedenSabesan Manivasakan
Querying Data Providing Web Services
Manivasakan Sabesan
Department of Information Technology
Uppsala University
Sweden.
Abstract
Web services are often used for search computing where data is retrieved from servers providing information of different kinds. Such data providing web services return a set of objects for a given set of parameters without any side effects. There is need to enable general and scalable search capabilities of data from data providing web services, which is the topic of this Thesis.
The Web Service MEDiator (WSMED) system automatically provides relational views of any data providing web service operations by reading the WSDL documents describing them. These views can be queried with SQL. Without any knowledge of the costs of executing specific web service operations the WSMED query processor automatically and adaptively finds an optimized parallel execution plan calling queried data providing web services.
For scalable execution of queries to data providing web services, an algebra operator PAP adaptively parallelizes calls in execution plans to web service operations until no significant performance improvement is measured, based on monitoring the flow from web service operations without any cost knowledge or extensive memory usage.
To comply with the Everything as a Service (XaaS) paradigm WSMED itself is implemented as a web service that provides web service operations to query and combine data from data providing web services. A web based demonstration of the WSMED web service provides general SQL queries to any data providing web service operations from a browser.
WSMED assumes that all queried data sources are available as web services. To make any data providing system into a data providing web service WSMED includes a subsystem, the web service generator, which generates and deploys the web service operations to access a data source. The WSMED web service itself is generated by the web service generator.
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)VMware Tanzu
The demands of fast incremental code development require a stable, safe, and continuous delivery pipeline that can get your code into the hands of your customers without delay. Put your continuous delivery pipeline on autopilot by automating and simplifying the workflow—continuous integration to production readiness—and by using an automated monitoring solution to prevent bad builds from impacting production.
This webinar will cover the steps to building an automated, monitored pipeline:
1. Modeling and visualizing your build and delivery process as a pipeline (defined as a single, declarative config file) using Concourse CI.
2. Leveraging integrations to trigger actions and share data, supporting functions like testing, collaboration, and monitoring.
3. Enhancing your end-to-end continuous delivery pipeline with contextual deployment event feeds to Dynatrace.
4. Adding automated, metrics-based quality gates between pre-production stages and an automatic post-production approval step, all with specifications defined in source control.
Attendees will learn how some of the unique capabilities of Concourse CI and Pivotal Cloud Foundry, coupled with Dynatrace’s software intelligence, can put your continuous delivery pipeline on autopilot and ensure safer production outcomes.
Presenters: James Ma, Senior Product Manager, Pivotal & Michael Villiger, Sr. Technical Partner Manager, Dynatrace
Reduxing UI: Borrowing the Best of Web to Make Android BetterChristina Lee
This talk was given at Realm on 3.31.16 and makes the case for looking to the web to find better mobile strategies. Also covers one example of a way you can take a web framework (Cycle.js) and port it to native.
This document provides an overview of financial statement analysis for healthcare organizations. It discusses various tools used for analysis, including horizontal analysis, vertical analysis, ratio analysis, and trend analysis. Horizontal analysis compares financial data over time, vertical analysis expresses figures as percentages of a total, ratio analysis examines relationships between figures, and trend analysis compares figures to a base year. The document also outlines common liquidity, profitability, activity, and capital structure ratios used in analysis and provides examples of applying various tools to sample financial statements.
Everything to Know About React Re-Rendering: A Comprehensive GuideBOSC Tech Labs
This blog will cover a comprehensive guide to React re-rendering, its components, and its types. You will get an overview of React components with an example.
This document discusses various types of financial statement analysis that can be used to analyze the financial performance and position of healthcare organizations. It covers horizontal analysis, vertical analysis, ratio analysis, and calculating specific ratios to evaluate an organization's liquidity, profitability, activity, and capital structure. The learning objectives are to analyze financial statements using these techniques and to calculate and interpret common liquidity, profit, activity, and capital structure ratios.
Making design decisions in React-based ClojureScript web applicationsFalko Riemenschneider
After the appearance of React in the browser landscape the community built numerous libraries like Om, Om Next, Reagent (used with or without Re-frame), Quiescent, Reacl and perhaps even more to make Reacts blessings available in ClojureScript. Some libraries clearly express their preferences about how a more complete frontend architecture should look like, and encourage us to add core.async, co-located queries, reactive programming or cursors to the mix.
Based on an understanding of the general problems to be solved within a single-page-application this talk will provide some design heuristics on how to make the right choices that add just enough complexity to your frontend.
About Basics of IBM Rational Performance Tester Tool.
It describes what is RPT? how to do a simple script in RPT.
And how to execute it?.
Its a brief idea about RPT
- Oracle Business Rules is a lightweight business rules product that is part of Oracle Fusion Middleware and can be used in SOA and BPM suites. It allows business processes to be more agile and align with changing business demands by acting as a central rules repository.
- The document demonstrates how to create a rule in Oracle Business Rules using JDeveloper to calculate student grades based on average marks and test it using various methods like a debugging function, the Enterprise Manager console, and SOAP UI web services calls.
- A decision table rule is created to return a grade based on comparing average marks to ranges in a bucketset. The rule can then be tested by passing sample data and evaluating the output.
Special thanks to Daniel Egan. This presentation provides a deeper dive into Windows Phone 7 for developers. Topics cover how you navigate in your applicaton, how to access Web Services, use JSON to move data, and how to push notifications.
The document discusses local versus global variables in JavaScript, noting that declaring variables with var makes them local and available only within the function, while declaring without var makes them global and available outside the function. It provides examples showing how local and global variables work differently depending on whether var is used or not when declaring the variable. The document aims to explain the difference between local and global variables and when it is better to use local variables over global ones.
Whitepaper: Measuring Engagement in Native AdvertisingMissy Steiner
Native advertising is relatively young compared to the paid
search and traditional display advertising markets which
means that the tools available to marketers to measure
the performance of their campaigns is immature. Marketers
are often forced to use click-through-rate (CTR) to
measure the performance of their campaign. In some
scenarios it makes sense to define a conversion goal and
measure conversion rate. However, this is not possible in
all scenarios.
1) The VP provided an overview of Intuit's Consumer Tax Group's performance in FY2014, noting good growth and market share gains in the US but room for improvement in Canada.
2) While progress was made innovating the product experience and customer service, further work is needed to improve the experience for returning and new users.
3) The FY2014 results marked a good start to a multi-year journey to fully deliver on the promise of innovating at every customer touchpoint.
ReqPro is a requirements management tool that allows teams to organize, prioritize, track, and control changing requirements. It provides several views and methods for working with requirements, including through requirement properties, Microsoft Word, and different types of views. Key features include creating and editing requirements, setting attributes and notes, and managing traceability between requirements through links, matrices, and trees.
This document provides steps to build a RESTful service using Oracle ADF Business Components (ADFBC). It describes how to create an ADF Fusion Web Application, connect to a database, generate business components and Java classes, add a custom method to invoke an Oracle API, create a REST resource, and test the RESTful service using Postman. The key steps are: 1) generating ADFBCs from tables, 2) adding a custom method to call an Oracle API, 3) creating a REST resource exposing the custom method, and 4) invoking the REST service using Postman to successfully process a transaction by calling the Oracle API.
Getting the service description (WSDL)
Configure Service Bus
Import Resources
Configure Business Service
Config ure the Credit Card Validation Proxy
Configure Message Flow(Validate & Report)
Adding a Pipeline Pair ->Add Stage ->Add Action(Reporting) ->Add Validate Action
Three years ago Store4, the little library that could, was released at KotlinConf'19. Store has been simplifying data loading on Android for close to a decade and was supercharged by being 100% Kotlin. Today we're here to talk about the next paradigm shift in data loading Store5 - a Kotlin Multiplatform solution for reading, writing and resolving data conflicts on any platform that Kotlin supports (Android, iOS, Web and Desktop). The Android community has embraced Store for close to a decade, Kotlin is making it possible to adopt the same patterns on other mobile platforms and beyond.
With the addition of support for updating remote sources, network resilience, pain free conflict resolution, and a highly extensible api - Store5 aims to make reading and writing data effortless on all Kotlin platforms. This talk will focus on Store5 foundational concepts and usage in production and at scale. We will be covering adopting KMP, applying Google's offline-first guiding principles beyond Android and how we hope to establish a seamless way for all apps, regardless of platform, to work with local and remote data. This talk is not to be missed for folks (like us) who have battle scars from years of working on hard to fix bugs in offline first applications.
Intro to GraphQL on Android with Apollo DroidconNYC 2017Mike Nakhimovich
Apollo-Android provides a strongly-typed, caching GraphQL client for Android that reduces the complexity of making GraphQL requests. It includes code generation that handles mapping GraphQL responses to Java models and builders for constructing GraphQL queries. The runtime client executes the operations and handles caching, reducing the need for custom networking, parsing, and storage code compared to REST. Apollo was developed by Shopify, New York Times, and AirBnb as an open source alternative to implementing GraphQL on Android with existing REST-based libraries and tools.
Data Loading Made Easy with Mike Nakhimovich DroidCon Italy 2017Mike Nakhimovich
The document discusses data loading and how the NY Times built the Store library to simplify it. Some key points:
- Store manages fetching, parsing, and caching of data for a specific model. It handles all the data flow in a reactive and persistent way.
- Stores are Observable objects that provide methods like get(), fetch(), and stream() to interact with data.
- The Store library uses repositories, parsers, and persisters to abstract where data comes from and how it's stored, cached, and transformed.
- Stores help achieve goals like surviving configuration changes, reducing memory usage, and standardizing offline behavior. They make data loading asynchronous, reactive, and dependent calls easier.
The document summarizes the New York Times' open source Store library for Android, which provides a unified way to fetch, parse, cache, and retrieve data in Android applications. The Store abstracts these processes and enforces unidirectional data flow while exposing data as RxJava Observables. Key aspects include using StoreBuilders to configure Stores, adding fetchers and parsers, using middleware like GsonSourceParser, and enabling disk caching. The document also provides guidance on open sourcing a new library, including using Android Studio and GitHub to set up the project, adding documentation like README and license, and publishing to Maven Central.
Dagger is a dependency injection framework that helps manage object creation and dependencies. It allows injecting dependencies into classes rather than having them directly instantiate dependencies. This improves testability. The document discusses how Dagger is used at the New York Times, including setting up modules, components, scopes like activity scope, and testing with Dagger. Qualifiers are used to provide different implementations for different flavors. Modules provide dependencies, components compose modules and inject dependencies. This architecture allows scaling across build variants and libraries while improving testability and code organization.
Dagger provides an alternative way to manage object dependencies through dependency injection. It uses compile time annotation processing to generate code that handles dependency resolution. Dagger eliminates the need to manually pass dependencies between objects. It supports features like lazy injection, providers, and scopes to control object lifecycles. The New York Times leveraged Dagger to decompose activities and share singletons like presenters across an application.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
Mobile app Development Services | Drona InfotechDrona Infotech
Drona Infotech is one of the Best Mobile App Development Company In Noida Maintenance and ongoing support. mobile app development Services can help you maintain and support your app after it has been launched. This includes fixing bugs, adding new features, and keeping your app up-to-date with the latest
Visit Us For :
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
When it is all about ERP solutions, companies typically meet their needs with common ERP solutions like SAP, Oracle, and Microsoft Dynamics. These big players have demonstrated that ERP systems can be either simple or highly comprehensive. This remains true today, but there are new factors to consider, including a promising new contender in the market that’s Odoo. This blog compares Odoo ERP with traditional ERP systems and explains why many companies now see Odoo ERP as the best choice.
What are ERP Systems?
An ERP, or Enterprise Resource Planning, system provides your company with valuable information to help you make better decisions and boost your ROI. You should choose an ERP system based on your company’s specific needs. For instance, if you run a manufacturing or retail business, you will need an ERP system that efficiently manages inventory. A consulting firm, on the other hand, would benefit from an ERP system that enhances daily operations. Similarly, eCommerce stores would select an ERP system tailored to their needs.
Because different businesses have different requirements, ERP system functionalities can vary. Among the various ERP systems available, Odoo ERP is considered one of the best in the ERp market with more than 12 million global users today.
Odoo is an open-source ERP system initially designed for small to medium-sized businesses but now suitable for a wide range of companies. Odoo offers a scalable and configurable point-of-sale management solution and allows you to create customised modules for specific industries. Odoo is gaining more popularity because it is built in a way that allows easy customisation, has a user-friendly interface, and is affordable. Here, you will cover the main differences and get to know why Odoo is gaining attention despite the many other ERP systems available in the market.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfVALiNTRY360
Salesforce Healthcare CRM, implemented by VALiNTRY360, revolutionizes patient management by enhancing patient engagement, streamlining administrative processes, and improving care coordination. Its advanced analytics, robust security, and seamless integration with telehealth services ensure that healthcare providers can deliver personalized, efficient, and secure patient care. By automating routine tasks and providing actionable insights, Salesforce Healthcare CRM enables healthcare providers to focus on delivering high-quality care, leading to better patient outcomes and higher satisfaction. VALiNTRY360's expertise ensures a tailored solution that meets the unique needs of any healthcare practice, from small clinics to large hospital systems.
For more info visit us https://valintry360.com/solutions/health-life-sciences
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
20. data class ScreenState(
val searchResults:List<Results>,
val searchTerm:String,
val isLoading:Boolean)
Example: state modeled as a single data class
21. data class ScreenState(
val searchResults:List<Results>,
val searchTerm:String,
val isLoading:Boolean,
val CartItems:List<Items>,
val userId:Long
Example: state modeled as a single growing data class
22. data class ScreenState(
val searchResults:List<Results>,
val searchTerm:String,
val isLoading:Boolean,
val CartItems:List<Items>,
val userId:Long
State modeled as a God class
23. Android devs love being reactive,
why not represent state as a stream?
24. Lately, I’ve been using a
centralized dispatcher to model
state as a reactive stream
53. Reactive state
Sealed class State{
data class ShowingLoading():State
data class ShowingResults(val results:List<String>):State
data class ShowingError(val error:Error):State
}
Represent your state as immutable value objects
54. Reactive state
Push new state through a reactive stream
Interface Dispatcher
fun dispatch(state: State)
}
interface RxState {
fun <T> ofType(clazz: Class<T>): Observable<T>
}
Sealed class State{
data class ShowingLoading():State
data class ShowingResults(val results:List<String>):State
data class ShowingError(val error:Error):State
}
55. Reactive state
Anytime UI needs to change, dispatch a new state
dispatcher.dispatch(State.ShowingResults(resultData)
dispatcher.dispatch(State.ShowingLoading()
dispatcher.dispatch(State.ShowingError(errors)
56. Reactive state
Anytime state changes, react to new state
rxState.ofType(State.Results)
.map{it.data}
.subscribe{ mvpView.updateUI(data) }
57. Rather than tightly coupling Search & Results
we decouple them with a dispatcher
69. Reactive state
Dispatcher needs to emit a new State to subscribers
Dispatcher
SearchPresenter
ResultsPresenter
SearchView
SearchTerm
ShowingResults
70. Reactive state
Dispatcher Emits new ShowingResults State to ResultsPresenter
Dispatcher
SearchPresenter
ResultsPresenter
SearchView
SearchTerm
ShowingResults
71. Reactive state
Dispatcher Emits new ShowingResults State to subscribers
Dispatcher
SearchPresenterSearchView
SearchTerm
ShowingResults
ResultsPresenter
72. Reactive state
Dispatcher Emits new ShowingResults State to subscribers
Dispatcher
SearchPresenter
ResultsPresenter
SearchView
SearchTerm
ResultsView
ShowingResults
73. Reactive state
Multiple Views can listen to same state change Dispatcher
SearchPresenterSearchView
SearchTerm
ResultsPresenterResultsView
LoadingPresenterLoadingView
80. Pizza
override fun attachView(view: NearYouMVPView) {
rxState.ofType(State.Results)
.map{it.data}
.subscribe{ mvpView.updateUI(data) }
}
Presenter subscribes on attach
81. Another presenter dispatches state change
Pizza
fun searchFor(searchTerm:String){
store.getResults(searchTerm)
.subscribe{dispatcher.dispatch(State.Results(data=it.results)}
82. Dispatcher emits state change
Pizza
fun searchFor(searchTerm:String){
store.getResults(searchTerm)
.subscribe{dispatcher.dispatch(State.Results(data=it.results)}
override fun attachView(view: NearYouMVPView) {
rxState.ofType(State.Results)
.map{it.data}
.subscribe{ mvpView.updateUI(data) }
}
83. Consumers & Producers of state stay decoupled
Pizza
fun searchFor(searchTerm:String){
store.getResults(searchTerm)
.subscribe{dispatcher.dispatch(State.Results(data=it.results)}
override fun attachView(view: NearYouMVPView) {
rxState.ofType(State.Results)
.map{it.data}
.subscribe{ mvpView.updateUI(data) }
}
108. We can show/hide views based on showing states
rxState.showingNot(Cart::class.java))
.subscribe({
mvpView.hide()
}))
rxState.showing(Cart::class.java))
.subscribe({
mvpView.showCart()
}))
128. Presenter dispatches new screen state
sealed class Screen : State() {
data class Checkout(val payload:String) : Screen()
}
dispatcher.dispatch(Screen.Checkout)
131. Dispatches a showing state
rxState.creating()
.subscribe({
createScreen(it)
dispatcher.dispatch(Showing(it.screen))
})
132. Dispatcher adds each showing event to a back stack
override fun dispatch(state: State) {
when (state) {
is Showing->{
backstack.push(state)
rxState.push(state)
}
else -> rxState.push(state)
}
}
133. Dispatcher adds each showing event to a back stack
override fun dispatch(state: State) {
when (state) {
is Showing->{
backstack.push(state)
rxState.push(state)
}
else -> rxState.push(state)
}
}
val backstack: Stack<Showing> = Stack()
134. Dispatcher pushes new state to subscribers
override fun dispatch(state: State) {
when (state) {
is Showing->{
backstack.push(state)
rxState.push(state)
}
else -> rxState.push(state)
}
}
135. Presenter reacts to the showing state
override fun attachView(mvpView: CheckoutMVPView) {
rxState.showing(Screen.Checkout::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { mvpView.show() }
136. Screens = States
sealed class Screen : State() {
object Search : Screen()
object Cart:Screen()
Data class Checkout(val items:List<Item>) : Screen()
data class Payment(val items:List<Item>) : Screen()
}
137. Routing becomes a state change
sealed class Screen : State() {
object Search : Screen()
object Cart:Screen()
Data class Checkout(val items:List<Item>) : Screen()
data class Payment(val items:List<Item>) : Screen()
}
fun goToSearch() {dispatcher.dispatch(Screen.Search)}
fun openCart() { dispatcher.dispatch(Screen.Cart) }
fun submitNames(firstName: String, lastName: String) {
userRepository.update(firstName, lastName)
.subscribe { dispatcher.dispatch(Screen.CheckoutPayment(cartItems)) }
}
140. Dispatcher.goBack()
Dispatcher will pop current showing state and
dispatch previous one again
interface Dispatcher {
fun dispatch(state: State)
fun goBack()
}
override fun onBackPressed() {
dispatcher.goBack()
}
141. State Stack = Back Stack
override fun onBackPressed() {
dispatcher.goBack()
}
interface Dispatcher {
fun dispatch(state: State)
fun goBack()
}
142. Back Stack = State Stack
interface Dispatcher {
fun dispatch(state: State)
fun goBack()
}
override fun onBackPressed() {
dispatcher.goBack()
}