Managing application state, asynchronous events and manually updating the DOM is hard. Cycle.js is a minimal framework that combines a pure functional programming style, immutability, and state management using Observables and Virtual DOM rendering. In this presentation we take a mild introduction to why that's interesting.
Web development is hard. Managing asynchronous events and updating the dom directly quickly becomes a mess. Cycle.js uses streams and pure functions to help. You can find the presentation video in https://youtu.be/1yXgFFVVJDw
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.
This document provides an overview of React and Redux concepts including:
- React basics like components, props, state, and lifecycle methods
- Flux architecture and how data flows through actions, dispatcher, and stores
- Redux as an alternative to Flux that uses a single store updated by reducers in response to actions
- Additional React topics like JSX, propTypes, and using React with ES6 classes are also covered.
This talk was delivered at JavaOne 2013, together with Andrzej Grzesik. We mention the new Date APIs, changes to Collections as well as Streams APIs and of course... Lambdas!
The document discusses Tracy Lee's presentation on reactive programming with RxJS. It provides an agenda for topics to be covered, including reactive programming in standards, frameworks and libraries, how to think reactively, what RxJS is, and how reactive programming makes development easier. Key points mentioned are promises and observables in standards, reactive programming support in Angular, React, Vue, and D3, treating all applications and data as event-driven and represented as sets of values over time, and that RxJS is the most popular library for reactive programming that provides observables as a way to react to and handle events.
Managing application state, asynchronous events and manually updating the DOM is hard. Cycle.js is a minimal framework that combines a pure functional programming style, immutability, and state management using Observables and Virtual DOM rendering. In this presentation we take a mild introduction to why that's interesting.
Web development is hard. Managing asynchronous events and updating the dom directly quickly becomes a mess. Cycle.js uses streams and pure functions to help. You can find the presentation video in https://youtu.be/1yXgFFVVJDw
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.
This document provides an overview of React and Redux concepts including:
- React basics like components, props, state, and lifecycle methods
- Flux architecture and how data flows through actions, dispatcher, and stores
- Redux as an alternative to Flux that uses a single store updated by reducers in response to actions
- Additional React topics like JSX, propTypes, and using React with ES6 classes are also covered.
This talk was delivered at JavaOne 2013, together with Andrzej Grzesik. We mention the new Date APIs, changes to Collections as well as Streams APIs and of course... Lambdas!
The document discusses Tracy Lee's presentation on reactive programming with RxJS. It provides an agenda for topics to be covered, including reactive programming in standards, frameworks and libraries, how to think reactively, what RxJS is, and how reactive programming makes development easier. Key points mentioned are promises and observables in standards, reactive programming support in Angular, React, Vue, and D3, treating all applications and data as event-driven and represented as sets of values over time, and that RxJS is the most popular library for reactive programming that provides observables as a way to react to and handle events.
Angular Optimization Web Performance MeetupDavid Barreto
This document summarizes techniques for optimizing Angular applications, including ahead-of-time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server-side rendering. It provides code examples and compares the performance of different approaches by measuring load times. The main takeaways are that ahead-of-time compilation, lazy loading, and server-side rendering can each significantly improve load performance, and that change detection strategies and unsubscribing from observables are important for memory usage and efficiency.
React is a fantastic Javascript rendering framework with a steep learning curve. One of the reasons is understanding state. We explore unidirectional flow, props, state Immutability and Redux.
FullStack Reativo com Spring WebFlux + AngularLoiane Groner
This document discusses building a full-stack reactive application using Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, building a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and integrating the two. The document includes an agenda, descriptions of reactive architecture and programming, examples of reactive applications and services in Spring and Angular, and challenges and references for further information.
Angular for Java Enterprise Developers: Oracle Code One 2018Loiane Groner
This document provides an agenda and overview for developing Angular applications with Java backend services. It discusses TypeScript patterns that are common with Java, using the Angular CLI, creating REST APIs with Spring Boot, bundling Angular for production, and deploying Angular and Java applications to the cloud using Maven and Docker. It also covers Angular fundamentals like components, templates, dependency injection and modules.
Serverless Angular, Material, Firebase and Google Cloud applicationsLoiane Groner
Presented at DevFest Florida 2019 - January 19, Orlando, FL.
In this talk we'll learn how to use all the power of Google stack technologies (Angular, Material, Firebase and Google Cloud) to develop a full stack application. We'll learn how we can empower a serverless Angular + Material application with Firebase and reactive programming by using realtime database, Firestore, authentication (with different providers) and Firebase hosting. And we if need any other functionality, we can use Cloud Functions or a NodeJS app. This talk will demonstrate the overview of a real world application (40k users), along with CI configuration and some details of the code (the good parts!).
Full-Stack Reativo com Spring WebFlux + Angular - Devs Java GirlLoiane Groner
The document discusses building a full-stack reactive application using Spring WebFlux for the backend and Angular for the frontend. It covers using Spring Data to access a MongoDB database reactively, building controllers with Spring WebFlux, and managing state in Angular with NgRx and RxJS. Code examples are provided for defining a reactive model, repository, and controller in Spring as well as making HTTP requests between Angular and Spring reactively.
Gerenciamento de estado no Angular com NgRxLoiane Groner
The document discusses NgRx and managing state in Angular applications. It introduces NgRx and key concepts like actions, reducers, and effects. It explains how NgRx implements the unidirectional data flow pattern with stores, actions, and reducers. Components dispatch actions and select state from the store as observables. Effects are used to handle asynchronous logic and side effects. Following these patterns with NgRx can help manage complex state and data flow in large Angular applications.
Full-Stack Reactive with Spring WebFlux + Angular - Oracle Code One 2018Loiane Groner
The document discusses building full-stack reactive applications using Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and managing state with NgRx. The demo application uses a MongoDB database with a Spring Data repository and exposes reactive Flux streams from the backend to be consumed by the Angular frontend.
Full-Stack Reativo com Spring WebFlux + Angular - FiqueEmCasaConfLoiane Groner
The document discusses building a full-stack reactive application with Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and managing state with NgRx and RxJS. Code samples are provided for a reactive Mongo repository, controller, and integrating Angular Http calls with Spring endpoints.
Let's discover React and Redux with TypeScriptMathieu Savy
1) React is a JavaScript library for building user interfaces using components. Redux is a state management library that uses a single state tree and immutable state changes via actions and reducers.
2) Redux uses a single state tree and immutable state changes via actions and reducers to manage state in a predictable way. State flows in one direction from the store through reducers on state changes.
3) React and Redux work well together using presentational and container components. Presentational components receive data and callbacks via props. Container components connect presentational components to the Redux store.
The document discusses new features and capabilities in Java EE 7 including support for WebSockets, JSON processing, batch applications, concurrency utilities, and a simplified JMS API. It highlights 10 top features in Java EE 7 and provides code examples for using new APIs like the WebSocket API and JSON processing API. The document promotes Java EE 7's focus on increased developer productivity and its ability to build next generation HTML5 applications and scale to demanding enterprise requirements.
Functional Reactive Endpoints using Spring 5Rory Preddy
Spring 5 is here! One of the most exciting introductions in this release is support for Reactive Streams out of the Box!
Finally, the most popular java framework & ecosystem gets the reactive library it needs!
In this talk we look at its core features and demo how you can easily get started.
For 20 years Rory has developed and designed distributed enterprise systems .
He works full time in Research which gives him an unparalleled insight into industry movement.
For fun, he runs the Java, AWS and Kotlin User groups and races microservice driven cars.
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.
Quick start with React | DreamLab Academy #2DreamLab
Szybki start z React. Prezentacja przedstawiona na warsztatach z podstaw technologii React w ramach DreamLab Academy.
W razie pytań zapraszamy do kontaktu academy@dreamlab.pl
Reactive programming with Rx-Java allows building responsive systems that can handle varying workloads and failures. It promotes asynchronous and non-blocking code using observable sequences and operators. Rx-Java was created at Netflix to address issues like network chattiness and callback hell in their API. It transforms callback-based code into declarative pipelines. Key concepts are Observables that emit notifications, Operators that transform Observables, and Subscribers that receive emitted items. Rx-Java gained popularity due to its support for concurrency, error handling, and composability.
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019Loiane Groner
This document summarizes a presentation on building full-stack reactive applications with Spring WebFlux and Angular. The presentation covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular and NgRx, and integrating them with a MongoDB data source. Demo applications are shown to illustrate reactive data flow and state management across the full stack.
Angular & RXJS: examples and use casesFabio Biondi
The document discusses using RxJS in Angular applications. It provides examples of using RxJS operators like interval, map, async pipe, filter, switchMap, exhaustMap, tap, scan, and reduce. Common use cases include handling events, making HTTP requests, managing application state, and manipulating data. RxJS can be used in components, directives, services, routing, forms, and more throughout an Angular application.
This document provides an overview of GraphQL basics and compares it to REST APIs. It discusses that GraphQL allows fetching multiple resources with a single query, while REST typically requires multiple requests. GraphQL also avoids over-fetching and under-fetching of data, and provides built-in type checking and documentation. The document outlines topics that will be covered in the next session, including GraphQL schemas, resolvers, and introspection.
React on Rails - RailsConf 2017 (Phoenix)Jo Cranford
The document summarizes the evolution of using React within a Rails application. It describes initially using jQuery and Bootstrap for front-end development needs. It then covers adopting React to take advantage of its one-way data flow and component-based approach. Key steps included embracing ES6 syntax, adding Webpack, introducing Jest for testing, and migrating from Sprockets to manage assets. Over time, React Router and Redux were added for routing and state management. The document concludes by noting ongoing work to improve consistency.
This document introduces the Vaadin framework, which is a user interface framework for building rich web applications. It discusses how Vaadin enables developer productivity through features like user interface components, automated communication between the client and server, and support for multiple devices. The document also covers trends in web frameworks like AngularJS and web components, and how Vaadin is exploring these trends through new components in Vaadin Labs and building web components with GWT.
Angular Optimization Web Performance MeetupDavid Barreto
This document summarizes techniques for optimizing Angular applications, including ahead-of-time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server-side rendering. It provides code examples and compares the performance of different approaches by measuring load times. The main takeaways are that ahead-of-time compilation, lazy loading, and server-side rendering can each significantly improve load performance, and that change detection strategies and unsubscribing from observables are important for memory usage and efficiency.
React is a fantastic Javascript rendering framework with a steep learning curve. One of the reasons is understanding state. We explore unidirectional flow, props, state Immutability and Redux.
FullStack Reativo com Spring WebFlux + AngularLoiane Groner
This document discusses building a full-stack reactive application using Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, building a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and integrating the two. The document includes an agenda, descriptions of reactive architecture and programming, examples of reactive applications and services in Spring and Angular, and challenges and references for further information.
Angular for Java Enterprise Developers: Oracle Code One 2018Loiane Groner
This document provides an agenda and overview for developing Angular applications with Java backend services. It discusses TypeScript patterns that are common with Java, using the Angular CLI, creating REST APIs with Spring Boot, bundling Angular for production, and deploying Angular and Java applications to the cloud using Maven and Docker. It also covers Angular fundamentals like components, templates, dependency injection and modules.
Serverless Angular, Material, Firebase and Google Cloud applicationsLoiane Groner
Presented at DevFest Florida 2019 - January 19, Orlando, FL.
In this talk we'll learn how to use all the power of Google stack technologies (Angular, Material, Firebase and Google Cloud) to develop a full stack application. We'll learn how we can empower a serverless Angular + Material application with Firebase and reactive programming by using realtime database, Firestore, authentication (with different providers) and Firebase hosting. And we if need any other functionality, we can use Cloud Functions or a NodeJS app. This talk will demonstrate the overview of a real world application (40k users), along with CI configuration and some details of the code (the good parts!).
Full-Stack Reativo com Spring WebFlux + Angular - Devs Java GirlLoiane Groner
The document discusses building a full-stack reactive application using Spring WebFlux for the backend and Angular for the frontend. It covers using Spring Data to access a MongoDB database reactively, building controllers with Spring WebFlux, and managing state in Angular with NgRx and RxJS. Code examples are provided for defining a reactive model, repository, and controller in Spring as well as making HTTP requests between Angular and Spring reactively.
Gerenciamento de estado no Angular com NgRxLoiane Groner
The document discusses NgRx and managing state in Angular applications. It introduces NgRx and key concepts like actions, reducers, and effects. It explains how NgRx implements the unidirectional data flow pattern with stores, actions, and reducers. Components dispatch actions and select state from the store as observables. Effects are used to handle asynchronous logic and side effects. Following these patterns with NgRx can help manage complex state and data flow in large Angular applications.
Full-Stack Reactive with Spring WebFlux + Angular - Oracle Code One 2018Loiane Groner
The document discusses building full-stack reactive applications using Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and managing state with NgRx. The demo application uses a MongoDB database with a Spring Data repository and exposes reactive Flux streams from the backend to be consumed by the Angular frontend.
Full-Stack Reativo com Spring WebFlux + Angular - FiqueEmCasaConfLoiane Groner
The document discusses building a full-stack reactive application with Spring WebFlux for the backend and Angular for the frontend. It covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular, and managing state with NgRx and RxJS. Code samples are provided for a reactive Mongo repository, controller, and integrating Angular Http calls with Spring endpoints.
Let's discover React and Redux with TypeScriptMathieu Savy
1) React is a JavaScript library for building user interfaces using components. Redux is a state management library that uses a single state tree and immutable state changes via actions and reducers.
2) Redux uses a single state tree and immutable state changes via actions and reducers to manage state in a predictable way. State flows in one direction from the store through reducers on state changes.
3) React and Redux work well together using presentational and container components. Presentational components receive data and callbacks via props. Container components connect presentational components to the Redux store.
The document discusses new features and capabilities in Java EE 7 including support for WebSockets, JSON processing, batch applications, concurrency utilities, and a simplified JMS API. It highlights 10 top features in Java EE 7 and provides code examples for using new APIs like the WebSocket API and JSON processing API. The document promotes Java EE 7's focus on increased developer productivity and its ability to build next generation HTML5 applications and scale to demanding enterprise requirements.
Functional Reactive Endpoints using Spring 5Rory Preddy
Spring 5 is here! One of the most exciting introductions in this release is support for Reactive Streams out of the Box!
Finally, the most popular java framework & ecosystem gets the reactive library it needs!
In this talk we look at its core features and demo how you can easily get started.
For 20 years Rory has developed and designed distributed enterprise systems .
He works full time in Research which gives him an unparalleled insight into industry movement.
For fun, he runs the Java, AWS and Kotlin User groups and races microservice driven cars.
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.
Quick start with React | DreamLab Academy #2DreamLab
Szybki start z React. Prezentacja przedstawiona na warsztatach z podstaw technologii React w ramach DreamLab Academy.
W razie pytań zapraszamy do kontaktu academy@dreamlab.pl
Reactive programming with Rx-Java allows building responsive systems that can handle varying workloads and failures. It promotes asynchronous and non-blocking code using observable sequences and operators. Rx-Java was created at Netflix to address issues like network chattiness and callback hell in their API. It transforms callback-based code into declarative pipelines. Key concepts are Observables that emit notifications, Operators that transform Observables, and Subscribers that receive emitted items. Rx-Java gained popularity due to its support for concurrency, error handling, and composability.
Full-Stack Reactive with Spring WebFlux + Angular - JConf Colombia 2019Loiane Groner
This document summarizes a presentation on building full-stack reactive applications with Spring WebFlux and Angular. The presentation covers reactive programming concepts, implementing a reactive backend with Spring WebFlux, building a reactive frontend with Angular and NgRx, and integrating them with a MongoDB data source. Demo applications are shown to illustrate reactive data flow and state management across the full stack.
Angular & RXJS: examples and use casesFabio Biondi
The document discusses using RxJS in Angular applications. It provides examples of using RxJS operators like interval, map, async pipe, filter, switchMap, exhaustMap, tap, scan, and reduce. Common use cases include handling events, making HTTP requests, managing application state, and manipulating data. RxJS can be used in components, directives, services, routing, forms, and more throughout an Angular application.
This document provides an overview of GraphQL basics and compares it to REST APIs. It discusses that GraphQL allows fetching multiple resources with a single query, while REST typically requires multiple requests. GraphQL also avoids over-fetching and under-fetching of data, and provides built-in type checking and documentation. The document outlines topics that will be covered in the next session, including GraphQL schemas, resolvers, and introspection.
React on Rails - RailsConf 2017 (Phoenix)Jo Cranford
The document summarizes the evolution of using React within a Rails application. It describes initially using jQuery and Bootstrap for front-end development needs. It then covers adopting React to take advantage of its one-way data flow and component-based approach. Key steps included embracing ES6 syntax, adding Webpack, introducing Jest for testing, and migrating from Sprockets to manage assets. Over time, React Router and Redux were added for routing and state management. The document concludes by noting ongoing work to improve consistency.
This document introduces the Vaadin framework, which is a user interface framework for building rich web applications. It discusses how Vaadin enables developer productivity through features like user interface components, automated communication between the client and server, and support for multiple devices. The document also covers trends in web frameworks like AngularJS and web components, and how Vaadin is exploring these trends through new components in Vaadin Labs and building web components with GWT.
IBM BusinessConnect 2014 DK: Bluemix and Vaadin SnapshotVille Ingman
This document discusses Vaadin, an open-source framework for building web applications. It notes that Vaadin has over 100,000 developers from over 6,000 cities, with 430 add-ons in its marketplace. The document promotes using IBM Bluemix and Vaadin together to build business applications for the cloud, highlighting benefits for both end users and engineers such as availability, productivity, constant performance, and short learning curves.
A shortcut to mobile app development: Enterprise Mobility 2014 HelsinkiVille Ingman
The document discusses factors to consider when mobilizing applications for Oikotie, including determining cost and return on investment, providing secure access, the mobile skills of staff, and ensuring a good user experience across different screen sizes. Mobile development technologies that could be used include Java, Objective-C, C#, HTML5, and HTTPS should be used to provide secure access. User experience must be prioritized through the design and development process.
Binding business data to vaadin componentsPeter Lehto
There are two main differences between setPropertyDataSource() and setContainerDataSource() for Vaadin components:
1. Data source type - setPropertyDataSource() binds the component to a single property, while setContainerDataSource() binds it to a full Container which can contain multiple items and properties.
2. Data binding - setPropertyDataSource() binds the component value to a specific property of the current item. setContainerDataSource() does not directly bind the component, it just sets the container as the available options but does not automatically select any value. The component does not know which property in the container to use as the value.
So in summary:
- setPropertyDataSource() binds a single component to a specific property
Vaadin is a Java-based web application framework that allows building server-side user interfaces for web apps. It provides rich web components that are rendered on the server and optimized for performance. Vaadin handles communication between the client and server so developers work in Java and build UIs declaratively without JavaScript. The document introduces key concepts of Vaadin like its building block components, server-side architecture, and support for any Java backend or technology.
Building impressive layout systems with vaadinPeter Lehto
The document discusses building layout systems for mobile, desktop, and tablet applications using Vaadin. It covers setting up navigation with views, using the UI as a bean, navigation managers, view displays, responsive design, events and security. The key lessons are that bean-based UIs provide easier enterprise integration, Vaadin supports CDI and Spring beans, the navigator API simplifies navigation, responsive design is integrated with the Valo theme, and events allow for loose coupling between scoped components.
Techlunch - Dependency Injection with VaadinPeter Lehto
The document discusses dependency injection (DI) with programmatic configuration. It defines DI as a mechanism where dependencies between objects are not directly created but instead satisfied by a third party - a DI container. The document outlines reasons for using DI including loose coupling and inversion of control. It provides examples of DI in Java using annotations and explains concepts such as scopes, producers and programmatic configuration. It also discusses integrating DI into Vaadin applications using CDI extensions.
The document discusses integrating Vaadin with Java Enterprise Edition (EE). It describes using Context and Dependency Injection (CDI) to allow Vaadin UI and view classes to be managed beans that can reference EE objects through annotations like @Inject and @EJB. This allows Vaadin applications to easily access services, repositories, and other components defined using Java EE APIs and specifications.
Migration from vaadin 6 to vaadin 7 devoxx france 2013Joonas Lehtinen
Moving to Vaadin 7 involves migrating from Vaadin 6 to take advantage of new features in Vaadin 7 including a new windowing API, improved field groups and converters, and SASS based themes. The migration involves updating dependencies to Vaadin 7, replacing the Application and Window classes with the UI class, and converting themes to use SASS. Many APIs are backwards compatible but some changes like separate presentation of field groups and converters may require updates to code. The Vaadin documentation provides guides on migration and information on new features in Vaadin 7.
Building mobile applications with Vaadin TouchKitSami Ekblad
TouchKit allows developers to build mobile applications using Java and Vaadin that work across iOS, Android, and Windows Phone. It uses a client-server model where UI components are implemented on the server-side in Java but rendered on the client-side using JavaScript widgets. TouchKit provides mobile optimized widgets, support for device features like geolocation and cameras using Apache Cordova, and responsive design capabilities. It is a good option when you need cross-device support on major mobile platforms and already have a Java backend.
Remote controlling Parrot AR drone with Vaadin & Spring Boot @ GWT.createPeter Lehto
Wouldn't it be crazy to fly a small drone or helicopter with your phone or tablet running nothing but a web browser? This session will tell you all about it!
Imagine a fully functional touch based user interface for remote controlling a small drone or a helicopter. This is doable with latest experimental integrations around drone controlling backend applications over WIFI with touch based control interface built with GWT or Vaadin. During the session such a system will be presented with full technology stack starting from GWT based frontend to the actual backend controller application.
A live drone will also be flown during the talk maintaining a safe distance from the audience.
Vaadin7 is an introduction to the Vaadin framework, which is a user interface framework for building rich web applications in Java. It allows developers to create user interface components and connect them to backend data sources while developing everything in Java. The framework handles rendering the interface and communication with the browser, allowing developers to focus on application logic rather than browser compatibility issues or JavaScript coding.
Related demo code available: https://github.com/samie/spring-vaadin-demo
Short 15min presentation how to use Vaadin and Spring together. See vaadin.com/spring on how to get started with your own app.
This document discusses techniques for working with legacy code, including sprout method, wrap method, and wrap class. Sprout method involves extracting part of an existing method into a new method. Wrap method surrounds an existing method with new code. Wrap class creates a new class that delegates to the original class, allowing new behavior to be added. The techniques allow new functionality to be added to legacy code in a way that does not disrupt existing behavior and allows the new code to be tested independently.
Vadym Khondar is a senior software engineer with 8 years of experience, including 2.5 years at EPAM. He leads a development team that works on web and JavaScript projects. The document discusses reactive programming, including its benefits of responsiveness, resilience, and other qualities. Examples demonstrate using streams, behaviors, and other reactive concepts to write more declarative and asynchronous code.
Presented this talk at AltConf 2019. Covers typical REST API approach to syncing data between servers and mobile apps; then discusses how new eventually consistent databases with syncing technology built in can be used to make syncing simpler and easier to work with.
This summarizes an Android developer toolbox document. The document provides recommendations for 5 categories of Android libraries: 1) Libraries, 2) Networking, 3) Databases, 4) Images, and 5) Utilities. Key libraries recommended include Retrofit, Glide, Realm, Dagger 2, and EventBus. The document provides brief descriptions and links for each library.
This document provides an overview of best practices for Android development. It discusses topics such as UI design, including layouts and styles; using the action bar for search and progress indicators; accessibility; network connections; asynchronous tasks and services; fragments and navigation patterns; geolocation and performance; dependency injection; and recommended tools and libraries. The document provides code snippets and links to the Android developer documentation for further information on these topics.
Применение паттерна Page Object для автоматизации веб сервисовCOMAQA.BY
Доклад о том, как еще можно организовать автоматизацию тестирования веб-сервисов, а именно, приспособить подход/шаблон Page Object (казалось бы, причем тут он?). Главное достоинство подхода - его максимальная простота и дружелюбность. Мы рассмотрим живой и успешно работающий на реальном проекте фреймворк, построенный подобным образом, разберём на слои, обсудим плюсы, минусы и саму идею подхода в целом.
Adding a modern twist to legacy web applicationsJeff Durta
Avoid misery of working with legacy code
We will see how you can add independent and isolated components to existing pages; pages that may be difficult to change
React and Flux allow you to make self-contained additions that handle their own data access/persistence
This document provides instructions for setting up and running a bot project using the Bot Builder SDK v4. It discusses downloading necessary software, creating a project in Visual Studio, implementing a welcome message, and managing state using user profiles and state accessors. The document contains code samples for creating a SampleBot class that inherits from IBot and uses state accessors and user profiles to save and retrieve a user's handle name.
Methods in PowerBuilder include events and functions. Events are executed from the bottom-up while functions are searched for from the bottom-up based on signature. Descendent methods can override or extend ancestor methods. Functions can be overloaded with different argument lists to perform different tasks. Events and functions can be invoked synchronously with Trigger or asynchronously with Post.
This document discusses principles for writing clean code in functions. It recommends that functions should be small, do one thing, have descriptive names, and avoid side effects. Functions with many arguments or switch statements are harder to understand. Exceptions should be used instead of return codes to indicate errors. Overall, following best practices for functions helps produce code that is easy to read and maintain.
React is a UI library that is changing the way web applications are written. While there are many benefits to using React, managing an application's complexity as it scales is one of the most powerful.
This document discusses the challenges of adding type checking to JavaScript code using Flow. It notes that adding types revealed errors in the code and documentation. It also discusses challenges like defining types for third party libraries, refactoring code without unintended consequences, handling null values, and getting organizational buy-in for the new requirements of using a type system. The document emphasizes that while challenging, adding types is worthwhile to improve the scalability and maintenance of the codebase.
.NET 7 is loaded with new features and specially covering Minimal API features like Endpoint Filters,
Route groups, Authentication Improvements, Endpoint metadata providers and
Unit Testing. This PPT covers the basics of API, Minimal API and new features.
If you're new to API and Minimal, you should be able to understand everything.
Workshop slides from the Alt.Net Seattle 2011 workshop. Presented by Wes Dyer and Ryan Riley. Get the slides and the workshop code at http://rxworkshop.codeplex.com/
Unit Testing Express and Koa Middleware in ES2015Morris Singer
Even for JavaScript software developers well-versed in Agile practices, using test-driven development in the development of Node.js-based webservers can be challenging. In this presentation, I identify solutions to some of the most significant challenges to using TDD to build middleware stacks, with a focus on Express and Koa.
Building Scalable Stateless Applications with RxJavaRick Warren
RxJava is a lightweight open-source library, originally from Netflix, that makes it easy to compose asynchronous data sources and operations. This presentation is a high-level intro to this library and how it can fit into your application.
Similar to Functional Vaadin talk at OSCON 2014 (20)
Streamlining End-to-End Testing Automation with Azure DevOps Build & Release Pipelines
Automating end-to-end (e2e) test for Android and iOS native apps, and web apps, within Azure build and release pipelines, poses several challenges. This session dives into the key challenges and the repeatable solutions implemented across multiple teams at a leading Indian telecom disruptor, renowned for its affordable 4G/5G services, digital platforms, and broadband connectivity.
Challenge #1. Ensuring Test Environment Consistency: Establishing a standardized test execution environment across hundreds of Azure DevOps agents is crucial for achieving dependable testing results. This uniformity must seamlessly span from Build pipelines to various stages of the Release pipeline.
Challenge #2. Coordinated Test Execution Across Environments: Executing distinct subsets of tests using the same automation framework across diverse environments, such as the build pipeline and specific stages of the Release Pipeline, demands flexible and cohesive approaches.
Challenge #3. Testing on Linux-based Azure DevOps Agents: Conducting tests, particularly for web and native apps, on Azure DevOps Linux agents lacking browser or device connectivity presents specific challenges in attaining thorough testing coverage.
This session delves into how these challenges were addressed through:
1. Automate the setup of essential dependencies to ensure a consistent testing environment.
2. Create standardized templates for executing API tests, API workflow tests, and end-to-end tests in the Build pipeline, streamlining the testing process.
3. Implement task groups in Release pipeline stages to facilitate the execution of tests, ensuring consistency and efficiency across deployment phases.
4. Deploy browsers within Docker containers for web application testing, enhancing portability and scalability of testing environments.
5. Leverage diverse device farms dedicated to Android, iOS, and browser testing to cover a wide range of platforms and devices.
6. Integrate AI technology, such as Applitools Visual AI and Ultrafast Grid, to automate test execution and validation, improving accuracy and efficiency.
7. Utilize AI/ML-powered central test automation reporting server through platforms like reportportal.io, providing consolidated and real-time insights into test performance and issues.
These solutions not only facilitate comprehensive testing across platforms but also promote the principles of shift-left testing, enabling early feedback, implementing quality gates, and ensuring repeatability. By adopting these techniques, teams can effectively automate and execute tests, accelerating software delivery while upholding high-quality standards across Android, iOS, and web applications.
Software Test Automation - A Comprehensive Guide on Automated Testing.pdfkalichargn70th171
Moving to a more digitally focused era, the importance of software is rapidly increasing. Software tools are crucial for upgrading life standards, enhancing business prospects, and making a smart world. The smooth and fail-proof functioning of the software is very critical, as a large number of people are dependent on them.
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Secure-by-Design Using Hardware and Software Protection for FDA ComplianceICS
This webinar explores the “secure-by-design” approach to medical device software development. During this important session, we will outline which security measures should be considered for compliance, identify technical solutions available on various hardware platforms, summarize hardware protection methods you should consider when building in security and review security software such as Trusted Execution Environments for secure storage of keys and data, and Intrusion Detection Protection Systems to monitor for threats.
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Ensuring Efficiency and Speed with Practical Solutions for Clinical OperationsOnePlan Solutions
Clinical operations professionals encounter unique challenges. Balancing regulatory requirements, tight timelines, and the need for cross-functional collaboration can create significant internal pressures. Our upcoming webinar will introduce key strategies and tools to streamline and enhance clinical development processes, helping you overcome these challenges.
Orca: Nocode Graphical Editor for Container OrchestrationPedro J. Molina
Tool demo on CEDI/SISTEDES/JISBD2024 at A Coruña, Spain. 2024.06.18
"Orca: Nocode Graphical Editor for Container Orchestration"
by Pedro J. Molina PhD. from Metadev
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...Luigi Fugaro
Vector databases are transforming how we handle data, allowing us to search through text, images, and audio by converting them into vectors. Today, we'll dive into the basics of this exciting technology and discuss its potential to revolutionize our next-generation AI applications. We'll examine typical uses for these databases and the essential tools
developers need. Plus, we'll zoom in on the advanced capabilities of vector search and semantic caching in Java, showcasing these through a live demo with Redis libraries. Get ready to see how these powerful tools can change the game!
Flutter vs. React Native: A Detailed Comparison for App Development in 2024dhavalvaghelanectarb
Choosing the right framework for your cross-platform mobile app can be a tough decision. Both Flutter and React Native offer compelling features and have earned their place in the development world. Here is a detailed comparison to help you weigh their strengths and weaknesses. Here are the pros and cons of developing mobile apps in React Native vs Flutter.
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio, Inc.
Alluxio Webinar
June. 18, 2024
For more Alluxio Events: https://www.alluxio.io/events/
Speaker:
- Jianjian Xie (Staff Software Engineer, Alluxio)
As Trino users increasingly rely on cloud object storage for retrieving data, speed and cloud cost have become major challenges. The separation of compute and storage creates latency challenges when querying datasets; scanning data between storage and compute tiers becomes I/O bound. On the other hand, cloud API costs related to GET/LIST operations and cross-region data transfer add up quickly.
The newly introduced Trino file system cache by Alluxio aims to overcome the above challenges. In this session, Jianjian will dive into Trino data caching strategies, the latest test results, and discuss the multi-level caching architecture. This architecture makes Trino 10x faster for data lakes of any scale, from GB to EB.
What you will learn:
- Challenges relating to the speed and costs of running Trino in the cloud
- The new Trino file system cache feature overview, including the latest development status and test results
- A multi-level cache framework for maximized speed, including Trino file system cache and Alluxio distributed cache
- Real-world cases, including a large online payment firm and a top ridesharing company
- The future roadmap of Trino file system cache and Trino-Alluxio integration
6. Web application layers
JavaScriptWeb serverBackend Communication
JS
required required required required
Vaadin
required optionalrequired optional
7. Web application layers
JavaScriptWeb serverBackend Communication
JS
required required required required
Vaadin
required optionalrequired optional
1 layer
vs
3 layers
Less code
Less bugs
Faster time-to-market
8. > 100.000 developers from
> 10.000 cities
> 450 add-ons in the
marketplace
Other
4 %Asia
20 %
Americas
22 %
Europe
54 %
Open Source community
Apache-licensed
19. New Java 8 Date API in action
public int monthAge() {
return (new Date().getYear() - date.getYear()) * 12
+ (new Date().getMonth() - date.getMonth());
}
// Java 8 version with the new Date API
public int monthAge() {
return (int) Period.between(date, LocalDate.now()).toTotalMonths();
}
22. Workout Tracker example
editor.clear.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
editor.clearValues();
updateRating();
}
});
// Java 8 version with a lambda
editor.clear.addClickListener(event -> {
editor.clearValues();
updateRating();
});
23. Method references with the :: notation
! private void eventHandler(Button.ClickEvent event) {
// do something about the button click
}
button.addClickListener(this::eventHandler);
// If the handler method is static
button.addClickListener(MyClass::eventHandler);
24. Workout Tracker example
!editor.activity.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
updateRating();
}
});
// Java 8 version with a method reference
editor.date.addValueChangeListener(this::updateRating);
30. Returns a new stream by
applying the given function to
all elements of this stream.
!
Map
Returns a new stream
consisting of the elements of
this stream that match the
given predicate.
Filter
SQL analogue: SELECT SQL analogue: WHERE
31. Workout Tracker Example
!
!
!
// Java 8 version with stream operations
private Stream<Workout> findByAge(int maxMonths) {
return workouts.stream()
.filter(w -> w.monthAge() < maxMonths)
.sorted(Comparator.comparing(Workout::monthAge).reversed());
}
private List<Workout> findByAge(int maxMonths) {
List<Workout> result = new ArrayList<>();
for (Workout w : workouts) {
if (w.monthAge() < maxMonths) {
result.add(w);
}
}
Collections.sort(result, new Comparator<Workout>() {
@Override
public int compare(Workout o1, Workout o2) {
return o2.monthAge() - o1.monthAge();
}
});
!
return result;
}
32.
33. Scratching the surface of Scala syntax
class Cat(name: String) {
initLitterBox()
def meow(volume: Int = 5) = {
println(s"$name meows " +
(if (volume <= 5) "quietly" else "loudly"))
volume <= 5
}
}
Class body is the constructor
identifier: type notation
Functions with def keyword
Arguments can have default values
Return keyword optional
No semicolons needed
34. Burn the boilerplate - Workout.java
!
!
!
public void setDuration(int duration) {
this.duration = duration;
}
!
public double getAvgHR() {
return avgHR;
}
!
public void setAvgHR(double avgHR) {
this.avgHR = avgHR;
}
!
public double getMaxHR() {
return maxHR;
}
!
public void setMaxHR(double maxHR) {
this.maxHR = maxHR;
}
!
public int getCalories() {
return calories;
}
!
public void setCalories(int calories) {
this.calories = calories;
}
!
public String getComment() {
return comment;
}
!
public void setComment(String comment) {
this.comment = comment;
}
}
public class Workout {
private String activity;
private Date date;
private int duration, calories;
private double avgHR, maxHR;
private String comment;
!
public Workout(String activity, Date date, int time, double avgHR,
double maxHR, int kcal, String comment) {
this.activity = activity;
this.date = date;
this.duration = time;
this.avgHR = avgHR;
this.maxHR = maxHR;
this.calories = kcal;
this.comment = comment;
}
!
public int monthAge() {
return (int) Period.between(date, LocalDate.now()).toTotalMonths();
}
!
public String getActivity() {
return activity;
}
!
public void setActivity(String activity) {
this.activity = activity;
}
!
public Date getDate() {
return date;
}
!
public void setDate(Date date) {
this.date = date;
}
!
public int getDuration() {
return duration;
}
37. An example
// Scaladin
val layout = new VerticalLayout {
margin = true
!
add(Label("Hello, OSCON!"),
alignment = Alignment.TopCenter)
add(Button("Click me”, handleButtonClick))
}
// Java 7
VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
Label label = new Label(“Hello, OSCON!”);
layout.addComponent(title);
layout.setComponentAlignment(label,
Alignment.TOP_CENTER);
!
Button button = new Button(“Click me", new
Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
handleButtonClick();
}
});
layout.addComponent(button);
38. Input validation, Java 8 & Scala
// Scaladin version of the editor gives us the components as a Scala Set
// which supports functional operations.
private def areInputsValid = !editor.components.exists(fieldNotValidating)
// Java 8 version with anyMatch and a method reference
private boolean areInputsValid() {
return !StreamSupport.stream(editor.spliterator(), true)
.anyMatch(this::fieldNotValidating);
}