Java Web Programming [8/9] : JSF and AJAXIMC Institute
This document provides an overview of JavaServer Faces (JSF) and Asynchronous JavaScript and XML (AJAX). It describes JSF as a server-side user interface framework that uses components like UIForm and UIInput to build web applications. It also explains how AJAX allows for asynchronous client-server communication using XMLHttpRequest to update parts of a page without reloading. The key technologies discussed are JSF tags, configuration files, components and validators as well as the steps involved in an AJAX request like creating an XMLHttpRequest object and processing the response.
Hybrid apps combine the familiarity and depth of native facilities while at the same time allowing extensibility via embedded web views. Your Angular code needs to talk back and forth to your native code to exchange data. This talk goes through how to implement this communication on both Android and iOS. We will cover the basics of how to allow Java/Objective-C to talk to JavaScript running in a web view and also how to bring Angular into the mix.
This talk was given at FrenchKit 2019 which took place in Paris, France on 7-8 October.
With SwiftUI and Combine, Apple is changing its approach for how we define data flows and UI. As we move from playing with sample code to writing production apps, it’s time to start thinking about testing. Nataliya will show how to apply several learnings from her experience with declarative UIs to this new reality.
ReactJS is a JavaScript library for building user interfaces. It uses a virtual DOM and only updates parts of the real DOM that changed. React uses a component-based architecture where data flows unidirectionally via props and state. Lifecycle methods allow components to handle state changes. Components are built with JSX syntax and can be nested to build up an application from reusable pieces.
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao PauloRobert Nyman
The document provides an overview of various JavaScript APIs available for building web applications, including Browser ID for authentication, drag and drop, fullscreen mode, camera access, WebRTC, pointer lock, IndexedDB, battery status, and vibration. It also briefly mentions Boot to Gecko and the telephony and SMS APIs available in B2G.
Mozilla is a nonprofit dedicated to empowering users and promoting open web standards. The document discusses Mozilla's Browser ID system for user authentication, tools for developing web applications including manifest files, installing apps, accessing device capabilities like the camera and battery, and using technologies like IndexedDB, HTML5, and CSS3. It also covers Mozilla's Boot to Gecko project and APIs for telephony, SMS, and vibration in mobile browsers.
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3Rob Tweed
This document discusses separating concerns in React components. It provides an example of extracting the dynamic logic from a React component into a separate controller module. This keeps the component focused only on the view logic and renders. The controller module is required by the component and handles any asynchronous behavior or state updates. Separating these concerns improves modularity and makes the code easier to understand and maintain. The example transforms an existing component to use this pattern by moving the dynamic code into a new controller file and augmenting the main component with the controller's methods.
Java Web Programming [8/9] : JSF and AJAXIMC Institute
This document provides an overview of JavaServer Faces (JSF) and Asynchronous JavaScript and XML (AJAX). It describes JSF as a server-side user interface framework that uses components like UIForm and UIInput to build web applications. It also explains how AJAX allows for asynchronous client-server communication using XMLHttpRequest to update parts of a page without reloading. The key technologies discussed are JSF tags, configuration files, components and validators as well as the steps involved in an AJAX request like creating an XMLHttpRequest object and processing the response.
Hybrid apps combine the familiarity and depth of native facilities while at the same time allowing extensibility via embedded web views. Your Angular code needs to talk back and forth to your native code to exchange data. This talk goes through how to implement this communication on both Android and iOS. We will cover the basics of how to allow Java/Objective-C to talk to JavaScript running in a web view and also how to bring Angular into the mix.
This talk was given at FrenchKit 2019 which took place in Paris, France on 7-8 October.
With SwiftUI and Combine, Apple is changing its approach for how we define data flows and UI. As we move from playing with sample code to writing production apps, it’s time to start thinking about testing. Nataliya will show how to apply several learnings from her experience with declarative UIs to this new reality.
ReactJS is a JavaScript library for building user interfaces. It uses a virtual DOM and only updates parts of the real DOM that changed. React uses a component-based architecture where data flows unidirectionally via props and state. Lifecycle methods allow components to handle state changes. Components are built with JSX syntax and can be nested to build up an application from reusable pieces.
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao PauloRobert Nyman
The document provides an overview of various JavaScript APIs available for building web applications, including Browser ID for authentication, drag and drop, fullscreen mode, camera access, WebRTC, pointer lock, IndexedDB, battery status, and vibration. It also briefly mentions Boot to Gecko and the telephony and SMS APIs available in B2G.
Mozilla is a nonprofit dedicated to empowering users and promoting open web standards. The document discusses Mozilla's Browser ID system for user authentication, tools for developing web applications including manifest files, installing apps, accessing device capabilities like the camera and battery, and using technologies like IndexedDB, HTML5, and CSS3. It also covers Mozilla's Boot to Gecko project and APIs for telephony, SMS, and vibration in mobile browsers.
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3Rob Tweed
This document discusses separating concerns in React components. It provides an example of extracting the dynamic logic from a React component into a separate controller module. This keeps the component focused only on the view logic and renders. The controller module is required by the component and handles any asynchronous behavior or state updates. Separating these concerns improves modularity and makes the code easier to understand and maintain. The example transforms an existing component to use this pattern by moving the dynamic code into a new controller file and augmenting the main component with the controller's methods.
The document discusses how JavaScript frameworks like MooTools can be leveraged in Joomla sites to provide features like DOM manipulation, classes, event listeners, and effects. It describes how MooTools is the default framework used by Joomla and provides examples of its key capabilities. Additionally, it offers suggestions for optimizing framework usage, such as implementing the Google Loader API to decrease page load times.
JavaScript APIs - The Web is the Platform - MozCamp, Buenos AiresRobert Nyman
This document provides summaries of various JavaScript APIs available in the browser, including APIs for fullscreen mode, cameras, WebRTC, pointer lock, IndexedDB, battery status, B2G/Gaia, telephony/SMS, vibration, and developer tools. It encourages trying new things with these Web APIs.
The document describes the structure and components of an application codebase, including:
- The directory structure contains controllers, views, resources, and backend code
- Common UI components like linear layouts, cell layouts, panels, text views and inputs, images, and scenes are implemented
- Client-server communication uses messages to send commands and return results
- Server storage is implemented using Redis and simple data storage
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, ChileRobert Nyman
This document summarizes several JavaScript APIs available in the browser, including APIs for fullscreen mode, cameras, WebRTC, pointer lock, IndexedDB, battery status, and vibration. It also discusses Boot to Gecko, telephony/SMS, and developer tools.
4Developers 2018: Real-time capabilities in ASP.NET Core web applications (To...PROIDEA
This talk won't be about SignalR (it will be mentioned but that's all). It will focus on native techniques like WebSockets, Server-Sent Events and Push API. It will show how to use them and suggest when to use them by exploring their strong and weak sides.
JavaScript APIs - The Web is the Platform - MDN Hack Day, MontevideoRobert Nyman
The document discusses several JavaScript APIs available in the browser including fullscreen API, camera API, WebRTC, Pointer Lock API, IndexedDB, battery status API, Boot to Gecko, telephony and SMS APIs, vibration API, and developer tools. It provides code examples for how to use these APIs to enable fullscreen mode, access camera and files, capture video streams, track pointer movement, store data in IndexedDB, get battery status, make phone calls and send SMS, trigger vibration, and debug web applications.
The document discusses ASP.NET MVC internals including routing, controllers, views, and view engines. It explains how requests come to controllers through routing and routing handlers. It also describes how controllers execute actions and return results, and how view engines render views using view engines and templates. The document provides examples of customizing routing handlers, controllers, dependency injection, and view engines in ASP.NET MVC.
This document discusses background tasks in Universal Windows Platform (UWP) apps. It explains that apps are not notified when they are being terminated. It provides code samples for registering background tasks to run on triggers like time or push notifications, and setting conditions like internet availability. It also shows the application manifest configuration for declaring background tasks of different types.
The document discusses integrating ReactJS and Webpack into Ruby on Rails applications. It covers using modules with CommonJS, RequireJS, and ECMAScript 6. It also discusses using Webpack for bundling assets, setting up entry points, loaders, and plugins. Webpack can be configured to work with Rails by defining webpack.config.js and using the assets:webpack task for deployment. This provides a modular approach for JavaScript development while still leveraging Rails.
Academy PRO: Push notifications. Denis BeketskyBinary Studio
Push notifications allow web applications to send messages to users even when the app is not active. The document discusses the service worker API which is required to implement push notifications and receive messages asynchronously. It also covers how to use Firebase Cloud Messaging to send push notifications from a server to specific devices, topics, or multiple targets at once.
This document discusses setting up an intermediate WCF service to connect an Android application to Dynamics AX. It describes creating a WCF service that enables REST and outputs data as JSON for consumption by the Android application. The WCF service is configured to use authentication via headers and return AX data like item lists. The document also provides code samples for the WCF service interface and implementation, as well as the Android application code to call the service, parse the JSON response, and display it in a list view.
Taming Core Data by Arek Holko, MacoscopeMacoscope
The document discusses best practices for working with Core Data in iOS applications. It covers 9 steps: 1) setting up Core Data, 2) accessing the managed object context, 3) creating NSManagedObject subclasses, 4) creating fetch requests, 5) integrating networking, 6) using NSFetchedResultsController, 7) protocolizing models, 8) using immutable models, and 9) modularizing the code. The overall message is that Core Data code should be organized cleanly using small, single-purpose classes and protocols to improve testability, separation of concerns, and code reuse.
Ajax allows for asynchronous retrieval of data from a server in the background without reloading the page. It uses a combination of technologies like XMLHttpRequest, JavaScript, and DOM to make asynchronous calls to a server and update portions of a page without reloading. The document then provides an example of how an Ajax interaction works, from making an asynchronous request to a server to processing the response and updating the HTML DOM.
Ajax allows for asynchronous retrieval of data from a server in the background without reloading the page. It uses a combination of technologies like XMLHttpRequest, JavaScript, and DOM to make asynchronous calls to a server and update portions of a page without reloading. The document then provides an example of how an Ajax interaction works, from making an asynchronous request to a server to processing the response and updating the HTML DOM.
Spring Web Services allows creating web services using a contract-first approach. It provides components for defining data contracts with XSD, service contracts with WSDL, and implementing endpoints with annotated classes. Shared abstractions like WebServiceMessage and MessageContext provide common client and server functionality, while the MessageDispatcher handles dispatching requests to endpoints. The framework supports various transports including HTTP, JMS, and email.
This document discusses setting up an intermediate WCF service to connect an Android application to Dynamics AX. It describes creating a WCF service that enables REST and outputs data in JSON format for consumption by the Android application. The WCF service is configured to use authentication via headers and return sample inventory item data from AX. The Android application code shows making a request to the WCF service to get JSON data and parsing it to display in a list view.
Lift provides a concise framework for developing web applications in Scala with features like convention over configuration, clean separation of presentation logic and content, and powerful AJAX and Comet support. It leverages the Scala programming language and has a responsive community. Code is more concise in Lift, increasing developer productivity.
Overview of The Scala Based Lift Web FrameworkIndicThreads
All of us having experience with other web frameworks such as Struts,Tapestry, Rails, etc would ask “Why another framework? Does Lift really solve problems any differently or more effectively than the ones we’ve used before? The Lift Web Framework provides an advanced set of tools for quickly and easily building real-time, multi-users, interactive web applications. Lift has a unique advantage that no other web framework currently shares: the Scala programming language. Scala is a relatively new language developed by Martin Odersky and his group at EPFL Switzerland. Scala is a hybrid Object Oriented and Functional language that runs at native speeds on the JVM and fully interoperates with Java code. Lift is a hybrid web framework built on Scala. Lift derives its features and idioms from the best of existing web frameworks as well as the functional and OO features in Scala. It compiles to Java bytecode and runs on the JVM, which means that we can leverage the vast ecosystem of Java libraries just as we would with any other java web framework. This presentation details the advantages of this Scala based Web framework over all the existing frameworks that we have used uptil now and shows a small sample application built with Lift. We will create a basic application with a model that maps to RDBMS, web pages that correspond to back end logic and bind dynamically created content to elements on the webpage.
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos AiresRobert Nyman
This document discusses several JavaScript APIs available in modern browsers including fullscreen API, camera API, pointer lock API, IndexedDB, battery status API, vibration API, and developer tools. It provides code examples for how to use these APIs to enable fullscreen mode, access camera and files, track mouse movement, store data in IndexedDB, get battery information, trigger vibrations, and open developer tools.
The document discusses how JavaScript frameworks like MooTools can be leveraged in Joomla sites to provide features like DOM manipulation, classes, event listeners, and effects. It describes how MooTools is the default framework used by Joomla and provides examples of its key capabilities. Additionally, it offers suggestions for optimizing framework usage, such as implementing the Google Loader API to decrease page load times.
JavaScript APIs - The Web is the Platform - MozCamp, Buenos AiresRobert Nyman
This document provides summaries of various JavaScript APIs available in the browser, including APIs for fullscreen mode, cameras, WebRTC, pointer lock, IndexedDB, battery status, B2G/Gaia, telephony/SMS, vibration, and developer tools. It encourages trying new things with these Web APIs.
The document describes the structure and components of an application codebase, including:
- The directory structure contains controllers, views, resources, and backend code
- Common UI components like linear layouts, cell layouts, panels, text views and inputs, images, and scenes are implemented
- Client-server communication uses messages to send commands and return results
- Server storage is implemented using Redis and simple data storage
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, ChileRobert Nyman
This document summarizes several JavaScript APIs available in the browser, including APIs for fullscreen mode, cameras, WebRTC, pointer lock, IndexedDB, battery status, and vibration. It also discusses Boot to Gecko, telephony/SMS, and developer tools.
4Developers 2018: Real-time capabilities in ASP.NET Core web applications (To...PROIDEA
This talk won't be about SignalR (it will be mentioned but that's all). It will focus on native techniques like WebSockets, Server-Sent Events and Push API. It will show how to use them and suggest when to use them by exploring their strong and weak sides.
JavaScript APIs - The Web is the Platform - MDN Hack Day, MontevideoRobert Nyman
The document discusses several JavaScript APIs available in the browser including fullscreen API, camera API, WebRTC, Pointer Lock API, IndexedDB, battery status API, Boot to Gecko, telephony and SMS APIs, vibration API, and developer tools. It provides code examples for how to use these APIs to enable fullscreen mode, access camera and files, capture video streams, track pointer movement, store data in IndexedDB, get battery status, make phone calls and send SMS, trigger vibration, and debug web applications.
The document discusses ASP.NET MVC internals including routing, controllers, views, and view engines. It explains how requests come to controllers through routing and routing handlers. It also describes how controllers execute actions and return results, and how view engines render views using view engines and templates. The document provides examples of customizing routing handlers, controllers, dependency injection, and view engines in ASP.NET MVC.
This document discusses background tasks in Universal Windows Platform (UWP) apps. It explains that apps are not notified when they are being terminated. It provides code samples for registering background tasks to run on triggers like time or push notifications, and setting conditions like internet availability. It also shows the application manifest configuration for declaring background tasks of different types.
The document discusses integrating ReactJS and Webpack into Ruby on Rails applications. It covers using modules with CommonJS, RequireJS, and ECMAScript 6. It also discusses using Webpack for bundling assets, setting up entry points, loaders, and plugins. Webpack can be configured to work with Rails by defining webpack.config.js and using the assets:webpack task for deployment. This provides a modular approach for JavaScript development while still leveraging Rails.
Academy PRO: Push notifications. Denis BeketskyBinary Studio
Push notifications allow web applications to send messages to users even when the app is not active. The document discusses the service worker API which is required to implement push notifications and receive messages asynchronously. It also covers how to use Firebase Cloud Messaging to send push notifications from a server to specific devices, topics, or multiple targets at once.
This document discusses setting up an intermediate WCF service to connect an Android application to Dynamics AX. It describes creating a WCF service that enables REST and outputs data as JSON for consumption by the Android application. The WCF service is configured to use authentication via headers and return AX data like item lists. The document also provides code samples for the WCF service interface and implementation, as well as the Android application code to call the service, parse the JSON response, and display it in a list view.
Taming Core Data by Arek Holko, MacoscopeMacoscope
The document discusses best practices for working with Core Data in iOS applications. It covers 9 steps: 1) setting up Core Data, 2) accessing the managed object context, 3) creating NSManagedObject subclasses, 4) creating fetch requests, 5) integrating networking, 6) using NSFetchedResultsController, 7) protocolizing models, 8) using immutable models, and 9) modularizing the code. The overall message is that Core Data code should be organized cleanly using small, single-purpose classes and protocols to improve testability, separation of concerns, and code reuse.
Ajax allows for asynchronous retrieval of data from a server in the background without reloading the page. It uses a combination of technologies like XMLHttpRequest, JavaScript, and DOM to make asynchronous calls to a server and update portions of a page without reloading. The document then provides an example of how an Ajax interaction works, from making an asynchronous request to a server to processing the response and updating the HTML DOM.
Ajax allows for asynchronous retrieval of data from a server in the background without reloading the page. It uses a combination of technologies like XMLHttpRequest, JavaScript, and DOM to make asynchronous calls to a server and update portions of a page without reloading. The document then provides an example of how an Ajax interaction works, from making an asynchronous request to a server to processing the response and updating the HTML DOM.
Spring Web Services allows creating web services using a contract-first approach. It provides components for defining data contracts with XSD, service contracts with WSDL, and implementing endpoints with annotated classes. Shared abstractions like WebServiceMessage and MessageContext provide common client and server functionality, while the MessageDispatcher handles dispatching requests to endpoints. The framework supports various transports including HTTP, JMS, and email.
This document discusses setting up an intermediate WCF service to connect an Android application to Dynamics AX. It describes creating a WCF service that enables REST and outputs data in JSON format for consumption by the Android application. The WCF service is configured to use authentication via headers and return sample inventory item data from AX. The Android application code shows making a request to the WCF service to get JSON data and parsing it to display in a list view.
Lift provides a concise framework for developing web applications in Scala with features like convention over configuration, clean separation of presentation logic and content, and powerful AJAX and Comet support. It leverages the Scala programming language and has a responsive community. Code is more concise in Lift, increasing developer productivity.
Overview of The Scala Based Lift Web FrameworkIndicThreads
All of us having experience with other web frameworks such as Struts,Tapestry, Rails, etc would ask “Why another framework? Does Lift really solve problems any differently or more effectively than the ones we’ve used before? The Lift Web Framework provides an advanced set of tools for quickly and easily building real-time, multi-users, interactive web applications. Lift has a unique advantage that no other web framework currently shares: the Scala programming language. Scala is a relatively new language developed by Martin Odersky and his group at EPFL Switzerland. Scala is a hybrid Object Oriented and Functional language that runs at native speeds on the JVM and fully interoperates with Java code. Lift is a hybrid web framework built on Scala. Lift derives its features and idioms from the best of existing web frameworks as well as the functional and OO features in Scala. It compiles to Java bytecode and runs on the JVM, which means that we can leverage the vast ecosystem of Java libraries just as we would with any other java web framework. This presentation details the advantages of this Scala based Web framework over all the existing frameworks that we have used uptil now and shows a small sample application built with Lift. We will create a basic application with a model that maps to RDBMS, web pages that correspond to back end logic and bind dynamically created content to elements on the webpage.
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos AiresRobert Nyman
This document discusses several JavaScript APIs available in modern browsers including fullscreen API, camera API, pointer lock API, IndexedDB, battery status API, vibration API, and developer tools. It provides code examples for how to use these APIs to enable fullscreen mode, access camera and files, track mouse movement, store data in IndexedDB, get battery information, trigger vibrations, and open developer tools.
Similar to 20240516_동적_데이터을_대응하는_코드_작성하기.pdf (20)
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise boosts blood flow, releases endorphins, and promotes changes in the brain which help enhance one's emotional well-being and mental clarity.
Letusgo 2019 Summer - StringInterpolation and SwiftUI정민 안
The document discusses string interpolation in Swift and ways to create rich strings. It introduces string interpolation which allows placeholders in string literals to be replaced with variable values. It then describes extending string interpolation to support custom styles and creating attributed strings. Finally, it discusses using SwiftUI and function builders to build rich strings in a more readable way.
This document discusses iOS application architecture and module design. It recommends separating applications into common, service, and domain modules. It also recommends creating network modules that interact with APIs using Alamofire and creating domain models to encapsulate API responses. The document provides examples of module responsibilities and dependencies.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
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.
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
What is Continuous Testing in DevOps - A Definitive Guide.pdfkalichargn70th171
Once an overlooked aspect, continuous testing has become indispensable for enterprises striving to accelerate application delivery and reduce business impacts. According to a Statista report, 31.3% of global enterprises have embraced continuous integration and deployment within their DevOps, signaling a pervasive trend toward hastening release cycles.
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...kalichargn70th171
In today's fiercely competitive mobile app market, the role of the QA team is pivotal for continuous improvement and sustained success. Effective testing strategies are essential to navigate the challenges confidently and precisely. Ensuring the perfection of mobile apps before they reach end-users requires thoughtful decisions in the testing plan.
Superpower Your Apache Kafka Applications Development with Complementary Open...Paul Brebner
Kafka Summit talk (Bangalore, India, May 2, 2024, https://events.bizzabo.com/573863/agenda/session/1300469 )
Many Apache Kafka use cases take advantage of Kafka’s ability to integrate multiple heterogeneous systems for stream processing and real-time machine learning scenarios. But Kafka also exists in a rich ecosystem of related but complementary stream processing technologies and tools, particularly from the open-source community. In this talk, we’ll take you on a tour of a selection of complementary tools that can make Kafka even more powerful. We’ll focus on tools for stream processing and querying, streaming machine learning, stream visibility and observation, stream meta-data, stream visualisation, stream development including testing and the use of Generative AI and LLMs, and stream performance and scalability. By the end you will have a good idea of the types of Kafka “superhero” tools that exist, which are my favourites (and what superpowers they have), and how they combine to save your Kafka applications development universe from swamploads of data stagnation monsters!
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
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.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
3. App
외부
- Server
- App
- Web
- Apple Push Service
- Socket
API
App Scheme
WebKit JS
Push Noti
fi
cation
Socket
4. • 외부 서비스와 앱 간의 통신은 다양함
• 외부 서비스와 앱 간에는 약속한 데이터를 전달
• 전달하고 받을 데이터의 구조화
• API는 URL, Parameter, Response 등 송수신에 필요한 데이터 구조화 작업
• App Scheme, Javascript Handler 등에서 전달받은 데이터의 처리는 구조화가 되
어 있지 않음
5. // WKScriptMessageHandler 프로토콜 메서드 구현
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
// 메시지의 이름과 body 추출
guard
message.name == "actionHandler",
let messageBody = message.body as? [String: Any],
let action = messageBody["action"] as? String
else { return }
// Action에 따라 처리하는 switch 문
switch action {
case "loading": loading(body: messageBody)
case "openCard": openCard(body: messageBody)
case "payment": payment(body: messageBody)
case "log": log(body: messageBody)
default: break
}
}
// loading Action을 처리하는 함수
func loading(body: [String: Any]) {
guard
let value = body["show"] as? Bool
else { return }
switch value {
case true: showLoading()
case false: hideLoading()
}
}
// payment Action을 처리하는 함수
func payment(body: [String: Any]) {
guard
let id = body["paymentId"] as? String,
let info = body["paymentInfo"] as? [String: String]
else { return }
cardPayment(paymentId: id, paymentInfo: info)
}
6. // WKScriptMessageHandler 프로토콜 메서드 구현
func userContentController(
_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage
) {
// 메시지의 이름과 body 추출
guard
message.name == "actionHandler",
let messageBody = message.body as? [String: Any],
let action = messageBody["action"] as? String
else { return }
// Action에 따라 처리하는 switch 문
switch action {
case "loading": loading(body: messageBody)
case "openCard": openCard(body: messageBody)
case "payment": payment(body: messageBody)
case "log": log(body: messageBody)
default: break
}
}
// loading Action을 처리하는 함수
func loading(body: [String: Any]) {
guard
let value = body["show"] as? Bool
else { return }
switch value {
case true: showLoading()
case false: hideLoading()
}
}
// payment Action을 처리하는 함수
func payment(body: [String: Any]) {
guard
let id = body["paymentId"] as? String,
let info = body["paymentInfo"] as? [String: String]
else { return }
cardPayment(paymentId: id, paymentInfo: info)
}
7. struct WKScriptMessageActionHandler {
let closure: (_ body: [String: Any], _ webView: WKWebView?) -> Void
}
class WebViewManager {
private let actionHandlers: [String: WKScriptMessageActionHandler]
var webView: WKWebView?
init(actionHandlers: [String: WKScriptMessageActionHandler] = [:]) {
self.actionHandlers = actionHandlers
}
// WKScriptMessageHandler 프로토콜 메서드 구현
func userContentController(
_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage
) {
// 메시지의 이름과 body 추출
guard
message.name == "actionHandler",
let messageBody = message.body as? [String: Any],
let action = messageBody["action"] as? String
else { return }
actionHandlers[action]?.closure(messageBody, webView)
}
}
let loadingHandler = WKScriptMessageActionHandler {
[weak self] body, webview in
guard
let self,
let value = body["show"] as? Bool
else { return }
switch value {
case true: showLoading()
case false: hideLoading()
}
}
let paymentHandler = WKScriptMessageActionHandler {
[weak self] body, webview in
guard
let self,
let id = body["paymentId"] as? String,
let info = body["paymentInfo"] as? [String: String]
else { return }
cardPayment(paymentId: id, paymentInfo: info)
}
WebViewManager(actionHandlers: ["loading": loadingHandler,
"payment": paymentHandler])
8. • 모든 도메인과의 결합이 된 만능 WebView가 만들어지지 않도록 작업 필요
• 웹페이지에서 받은 ActionHandler를 직접 제어문을 통해 다루지 않아야함
• WebView를 사용하는 서비스, 도메인에서 Action과 Handler를 주입
• WebView는 WebView로서의 역할을 제한해야 함.
13. extension JSInterfaceSupervisor {
/// Loads a single plugin into the supervisor.
func loadPlugin(_ plugin: JSInterfacePluggable) {
let action = plugin.action
guard loadedPlugins[action] == nil else {
assertionFailure("(action) action already exists. Please
check the plugin.")
return
}
loadedPlugins[action] = plugin
}
}
extension JSInterfaceSupervisor {
/// Resolves an action and calls the corresponding plugin with a message and web view.
func resolve(
_ action: String,
message: [String: Any],
with webView: WKWebView) {
guard
let plugin = loadedPlugins[action], plugin.action == action
else {
assertionFailure("Failed to resolve (action): Action is not
loaded. Please ensure the plugin is correctly loaded.")
return
}
plugin.callAsAction(message, with: webView)
}
}
protocol JSInterfacePluggable {
var action: String { get }
func callAsAction(_ message: [String: Any], with: WKWebView)
}
/// Supervisor class responsible for loading and managing JS plugins.
class JSInterfaceSupervisor {
var loadedPlugins = [String: JSInterfacePluggable]()
init() {}
}
14. extension JSInterfaceSupervisor {
/// Loads a single plugin into the supervisor.
func loadPlugin(_ plugin: JSInterfacePluggable) {
let action = plugin.action
guard loadedPlugins[action] == nil else {
assertionFailure("(action) action already exists. Please
check the plugin.")
return
}
loadedPlugins[action] = plugin
}
}
extension JSInterfaceSupervisor {
/// Resolves an action and calls the corresponding plugin with a message and web view.
func resolve(
_ action: String,
message: [String: Any],
with webView: WKWebView) {
guard
let plugin = loadedPlugins[action], plugin.action == action
else {
assertionFailure("Failed to resolve (action): Action is not
loaded. Please ensure the plugin is correctly loaded.")
return
}
plugin.callAsAction(message, with: webView)
}
}
protocol JSInterfacePluggable {
var action: String { get }
func callAsAction(_ message: [String: Any], with: WKWebView)
}
/// Supervisor class responsible for loading and managing JS plugins.
class JSInterfaceSupervisor {
var loadedPlugins = [String: JSInterfacePluggable]()
init() {}
}
private let supervisor = JSInterfaceSupervisor()
// WKScriptMessageHandler 프로토콜 메서드 구현
func userContentController(
_ userContentController: WKUserContentController,
didReceive message: WKScriptMessage
) {
guard
message.name == "actionHandler",
let messageBody = message.body as? [String: Any],
let action = messageBody["action"] as? String,
let webView
else { return }
supervisor.resolve(action, message: messageBody, with: webView)
}
15. class LoadingJSPlugin: JSInterfacePluggable {
let action = "loading"
func callAsAction(
_ message: [String: Any],
with webView: WKWebView) {
guard
let result = Parser(message)
else { return }
closure?(result.info, webView)
}
func set(_ closure: @escaping (Info, WKWebView) -> Void) {
self.closure = closure
}
private var closure: ((Info, WKWebView) -> Void)?
}
extension LoadingJSPlugin {
struct Info {
let uuid: String
let isShow: Bool
}
}
private extension LoadingJSPlugin {
struct Parser {
let info: Info
init?(_ dictonary: [String: Any]) {
guard
let uuid = dictonary["uuid"] as? String,
let body = dictonary["body"] as? [String: Any],
let isShow = body["isShow"] as? Bool
else { return nil }
info = .init(uuid: uuid, isShow: isShow)
}
}
}
16. class PaymentJSPlugin: JSInterfacePluggable {
let action = "payment"
func callAsAction(
_ message: [String: Any],
with webView: WKWebView) {
guard
let result = Parser(message)
else { return }
closure?(result.info, webView)
}
func set(_ closure: @escaping (Info, WKWebView) -> Void) {
self.closure = closure
}
private var closure: ((Info, WKWebView) -> Void)?
}
extension PaymentJSPlugin {
struct Info {
let uuid: String
let paymentAmount: Int
let paymentTransactionId: String
let paymentId: String
let paymentGoodsName: String
}
}
private extension PaymentJSPlugin {
struct Parser {
let info: Info
init?(_ dictonary: [String: Any]) {
guard
let uuid = dictonary["uuid"] as? String,
let body = dictonary["body"] as? [String: Any],
let paymentAmount = body["amount"] as? Int,
let paymentTransactionId = body["transactionId"] as? String,
let paymentId = body["paymentId"] as? String,
let paymentGoodsName = body["paymentGoodsName"] as? String
else { return nil }
info = .init(
uuid: uuid,
paymentAmount: paymentAmount,
paymentTransactionId: paymentTransactionId,
paymentId: paymentId,
paymentGoodsName: paymentGoodsName
)
}
}
}
17. class ViewController: UIViewController {
private let webViewManager = WebViewManager()
override func viewDidLoad() {
super.viewDidLoad()
initPlugins()
}
private func initPlugins() {
let loadingPlugin = LoadingJSPlugin()
let paymentPlugin = PaymentJSPlugin()
loadingPlugin.set { info, webView in
print("LoadingPlugin :", info)
}
paymentPlugin.set { info, webView in
print("PaymentJSPlugin :", info)
}
webViewManager.set(plugins: [loadingPlugin, paymentPlugin])
}
}
18. • Action Handler를 분석하고, 직접 다루게 되면 만능 WebView가 탄생
• Plugin으로 Action을 구조화하며, WebView에서 등록된 Plugin을 호출하여 해당
Action의 책임을 가지지 않도록 함.
• 각 Plugin은 Action, 데이터 유효성 검증을 구현하여 Plugin을 검증할 수 있으며, Plugin
이 호출되었을 때의 응답값을 예상할 수 있음
• Plugin 방식은 웹페이지의 Javascript, 앱 푸시, 챗의 데이터, 웹 소켓 등의 동적 데이터
를 유연하게 대응할 수 있음