This document provides an introduction to Aspect-Oriented Programming (AOP) and AspectJ. It discusses why AOP is used, how it handles cross-cutting concerns, and its implementations in Java. It also describes the AspectJ compiler, join points, advice types, and annotations. Sample code is provided in a GitHub repository to demonstrate using aspects.
How to cover your web pages with easy tests in Python using easy wrapper over selenium of Selenide style. What are the styles of test coverage? How to start automation on your project? Which tool to choose?
This is a presentation to correspondent workshop (in russian) happened to have place in Kiev, during "Black Tea Testing #8" testing event, organized by Cogniance (cogniance.com) and IT Labs (itlabs.net.ua).
See video (in russian) at https://youtu.be/m1lopvj4nNg
See code src at https://github.com/yashaka/easy-web-tests-python/
This document discusses using aspects and aspect-oriented programming (AOP) to remove duplicate code. It provides background on AOP concepts like aspects, advice, join points, and pointcuts. It then discusses a PHP AOP library called Go! that allows adding aspects to classes at runtime by modifying their source code during loading. An example of using an aspect for caching is provided. The presentation encourages improving Go! by adding features like a pointcut parser and optimizing for performance.
This document provides an introduction to Robot Framework, an open source test automation framework for acceptance testing. It discusses Robot Framework's architecture, installation process, test structure, standard and external libraries, Selenium keywords, and provides a demo of creating a simple test case with Robot Framework.
Automation using RobotFramework for embedded deviceSrix Sriramkumar
In this talk at #rootconf 2014, Sriram talks about his experience in designing an internal test automation framework. He also shares his experience and insights in using Robot framework for KDT and DDT test automation.
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...Xebia Nederland BV
The Robot Framework is a generic test automation framework for acceptance test-driven development, that appears to be largely neglected.
Undeservedly so, as it facilitates powerful and yet simple test automation against a variety of interfaces.
It features some distinct advantages when compared to seemingly similar frameworks such as Cucumber or Fitnesse.
This workshop is meant to show you what makes the Robot Framework special and what is has to offer you.
This document provides an introduction to Aspect-Oriented Programming (AOP) and AspectJ. It discusses why AOP is used, how it handles cross-cutting concerns, and its implementations in Java. It also describes the AspectJ compiler, join points, advice types, and annotations. Sample code is provided in a GitHub repository to demonstrate using aspects.
How to cover your web pages with easy tests in Python using easy wrapper over selenium of Selenide style. What are the styles of test coverage? How to start automation on your project? Which tool to choose?
This is a presentation to correspondent workshop (in russian) happened to have place in Kiev, during "Black Tea Testing #8" testing event, organized by Cogniance (cogniance.com) and IT Labs (itlabs.net.ua).
See video (in russian) at https://youtu.be/m1lopvj4nNg
See code src at https://github.com/yashaka/easy-web-tests-python/
This document discusses using aspects and aspect-oriented programming (AOP) to remove duplicate code. It provides background on AOP concepts like aspects, advice, join points, and pointcuts. It then discusses a PHP AOP library called Go! that allows adding aspects to classes at runtime by modifying their source code during loading. An example of using an aspect for caching is provided. The presentation encourages improving Go! by adding features like a pointcut parser and optimizing for performance.
This document provides an introduction to Robot Framework, an open source test automation framework for acceptance testing. It discusses Robot Framework's architecture, installation process, test structure, standard and external libraries, Selenium keywords, and provides a demo of creating a simple test case with Robot Framework.
Automation using RobotFramework for embedded deviceSrix Sriramkumar
In this talk at #rootconf 2014, Sriram talks about his experience in designing an internal test automation framework. He also shares his experience and insights in using Robot framework for KDT and DDT test automation.
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...Xebia Nederland BV
The Robot Framework is a generic test automation framework for acceptance test-driven development, that appears to be largely neglected.
Undeservedly so, as it facilitates powerful and yet simple test automation against a variety of interfaces.
It features some distinct advantages when compared to seemingly similar frameworks such as Cucumber or Fitnesse.
This workshop is meant to show you what makes the Robot Framework special and what is has to offer you.
Functional Tests Automation with Robot Frameworklaurent bristiel
The document discusses Robot Framework, an open source test automation framework written in Python. It can be used to write functional, end-to-end, component, and unit tests. Robot Framework uses a keyword-driven, data-driven, or behavior-driven approach. It provides built-in keywords and libraries that allow tests to be written in a simple, lightweight manner and executed across multiple platforms and applications. Case studies are presented on large companies using Robot Framework to automate testing of their products. Both advantages and limitations of the framework are covered.
Learn how you can use the RobotFX for Acceptance Testing / Behavior Driven development / Integration Testing. Learn about the advanced keyword driven framework, and the ability to create reusable/custom higher-level keywords. Learn about the integration across multiple tools and extensibility.
This document provides instructions for installing and setting up the Robot Framework for acceptance testing and acceptance-test driven development. It discusses installing Python, pip, Robot Framework, and Selenium libraries. It also covers test structure, standard and external Robot Framework libraries, Selenium keywords, creating simple tests, running tests, and handling proxies. The document aims to help users create test cases with Robot Framework to test websites like Google, login pages, and todo applications.
Robot Framework - Lord of the Rings
Introduction to the Robot Framework for Acceptance Test automation, and hands on examples, highlighting the key features. To catch the demo's, drop me a note at my email id.
Talk from PHPSerbia-2017 conference about cross-cutting concerns and effective ways of solving them via decorators, mediators and aspect-oriented programming. Can be applied to the scattered code with logging, caching, authorization and many more.
Vitalii Tatarynov gave a presentation on efficient mobile automation. He discussed three parts of successful automation: writing good code, collaborating with the team, and making a robust infrastructure. For writing good code, he emphasized keeping it simple, reusing patterns and libraries, and leveraging new language features. For infrastructure, he described setting up a Jenkins pipeline for continuous integration and using Appium, Espresso, and OpenSTF for testing. He also demonstrated how to install Jenkins, OpenSTF, and set up a Docker environment for mobile testing automation.
In this slide share, even Beginners can easily learn Robot Framework.
Robot framework is an automation testing framework used for Mobile App automation (can automate both Andriod and iOS) and Web Application automation.
The document announces the release of Specs2 3.0 and provides an overview of the changes, improvements, and additional features. It mentions updates to the user guide, API with changes to nesting and fragments, new reporting capabilities, and support for ScalaCheck. It encourages users to try out the new version and provides examples of ways to contribute back through reporting issues, extending functionality, or adding new specs and tests.
Acceptance Test Drive Development with Robot FrameworkRamdhan Hidayat
Robot Framework are Python based automation testing tool. I am using Robot Framework as acceptance test tool during development process, so that each git commit I made RF will test it automatically for me.
Javascript unit tests with angular 1.xRon Apelbaum
This document discusses using Jasmine for unit testing JavaScript and Angular 1.x applications. It covers setting up a test framework with Jasmine and Karma, writing testable code, and testing Angular services, controllers, directives, and common patterns. Real-world examples are provided for testing Angular services using spies and dependency injection. The document emphasizes writing tests with a Given-When-Then structure, using matchers like toBe() and toEqual(), and spies for method stubs. Links are included for code samples, exercises, and the author's blog for further information on testing Angular applications with Jasmine.
Time has come to announce our first pilot event.
And we are gonna start with our the most favourite topic - test automation <3
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design.
And what occurring problem are we as QA engineers facing all the time? Right! Test automation frameworks.
So we will tell you a bit which design patterns can be used in test automation, why and where (not only Page Object pattern, we promise!) to make your tests shine!
The link to GitHub repo with test automation patterns used is to be shared during the webinar.
If you’re responsible for creating diverse, scalable automated tests but don’t have the time, budget, or a skilled-enough team to create yet another custom test automation framework, then you need to know about Robot Framework!
In this webinar, Bryan Lamb (Founder, RobotFrameworkTutorial.com) and Chris Broesamle (Solutions Engineer, Sauce Labs) will reveal how you can use this powerful, free, open source, generic framework to create continuous automated regression tests for web, batch, API, or database testing. With the simplicity of Robot Framework, in conjunction with Sauce Labs, you can improve your test coverage and time to delivery of your applications.
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...OdessaJS Conf
The document discusses various approaches for performing contract protection on the frontend side such as integration testing, law-driven contract testing, consumer-driven contract testing, and runtime checking. It then focuses on runtime checking, explaining what it is and how it can add an extra step to quality assurance by allowing integration errors to be responded to in real time. Details are provided on Oleksii Pavlenko who is an engineering manager, PhD holder, and former professional basketball player with interests in surfing, snowboarding, and other boardsports.
Robot Framework is an open source test automation framework that can be used to test web, desktop, and mobile applications. It uses a keyword-driven design and has a modular architecture that makes it easy to extend with custom test libraries. Some benefits include being highly reusable, accessible for beginners, and having powerful logging capabilities. However, it does not support while loops or nested for loops, and working with non-string data types can be complicated. The framework operates independently of the system under test and uses test suites made up of test cases that can each be in their own namespace. Custom keywords, variables, and extensions are usually stored separately.
Renaissance of JUnit - Introduction to JUnit 5Jimmy Lu
The document introduces JUnit 5, which was rewritten to address limitations in JUnit 4. JUnit 5 includes JUnit Jupiter for writing tests, JUnit Vintage for running JUnit 3/4 tests, and a unified platform. It provides key features like lambda syntax for assertions, dependency injection, dynamic and nested tests, and an extension model. The platform defines APIs for test discovery, execution and reporting that are used by IDEs and build tools to launch testing frameworks in a modular way.
This document discusses the challenges of automating UI and functional tests for Eclipse-based applications. It describes one company's journey from 2002 to develop their own test automation framework called Q7 to address these challenges. Q7 uses a scripting language called Eclipse Command Language (ECL) that allows non-programmers to automate tests through intuitive commands. The framework handles test initialization, element resolution, and runs tests across operating systems and windowing systems.
Robot Framework is a keyword-based test automation framework suitable for acceptance testing. It requires Python 2.7, pip, Robot Framework, and various libraries like Selenium2 and Requests. The document provides instructions on installing these prerequisites and building sample bots to demonstrate localized and data-driven testing capabilities.
利用 Appium + Robot Framework 實現跨平台 App 互動測試Jeremy Kao
The document discusses using Appium and Robot Framework to implement cross-platform app interaction testing. It covers testing scenarios involving multiple devices, implementing test cases using Appium servers and Robot Framework keywords, and considerations for the long-term such as reusable keywords and abstraction layers. Page object modeling is presented as a way to maintain readable and maintainable tests by abstracting UI elements and interactions.
This document contains a summary of a presentation about Android app development tools. It discusses Genymotion, an Android emulator, and how it provides faster emulation and additional features over the standard emulator. It also covers using Gradle as a build system for Android projects, including how to set up dependency management, signing, and building variants. The presentation provides sample Gradle scripts and links to GitHub repositories with more examples.
Aspect Oriented Programming (AOP) - A case study in AndroidCarlos Anjos
These are the slides for the talk I gave at Codebits hackathon 2011:
https://codebits.eu/intra/s/session/195
It shows how you can raise the level of abstraction and make your life a lot easier by using AOP (with AspectJ).
Examples are for the Android platform, but are easily ported to other java frameworks.
Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)WSO2
To view webinar recording please use below URL:
http://wso2.com/library/webinars/2015/11/integrating-mq-protocols-with-wso2-esb-4.9-rabbitmq-mqtt-kafka/
With the release of WSO2 ESB 4.9.0, we introduced enhanced functionalities in message queuing protocols that are heavily used in modern enterprise integrations. It includes completely new transports such as MQTT (message queuing telemetry transport) and Kafka and improvements to the existing RabbitMQ transport.
In this webinar, we are going to discuss
Improvements to RabbitMQ transport with inbound endpoint support
An introduction to MQTT transport and its usage in WSO2 ESB
Kafka integration with inbound endpoints
A MQTT producer/consumer demo explaining the basic consuming case using MQTT inbound endpoints and basic producer case using MQTT Axis2 transport
Functional Tests Automation with Robot Frameworklaurent bristiel
The document discusses Robot Framework, an open source test automation framework written in Python. It can be used to write functional, end-to-end, component, and unit tests. Robot Framework uses a keyword-driven, data-driven, or behavior-driven approach. It provides built-in keywords and libraries that allow tests to be written in a simple, lightweight manner and executed across multiple platforms and applications. Case studies are presented on large companies using Robot Framework to automate testing of their products. Both advantages and limitations of the framework are covered.
Learn how you can use the RobotFX for Acceptance Testing / Behavior Driven development / Integration Testing. Learn about the advanced keyword driven framework, and the ability to create reusable/custom higher-level keywords. Learn about the integration across multiple tools and extensibility.
This document provides instructions for installing and setting up the Robot Framework for acceptance testing and acceptance-test driven development. It discusses installing Python, pip, Robot Framework, and Selenium libraries. It also covers test structure, standard and external Robot Framework libraries, Selenium keywords, creating simple tests, running tests, and handling proxies. The document aims to help users create test cases with Robot Framework to test websites like Google, login pages, and todo applications.
Robot Framework - Lord of the Rings
Introduction to the Robot Framework for Acceptance Test automation, and hands on examples, highlighting the key features. To catch the demo's, drop me a note at my email id.
Talk from PHPSerbia-2017 conference about cross-cutting concerns and effective ways of solving them via decorators, mediators and aspect-oriented programming. Can be applied to the scattered code with logging, caching, authorization and many more.
Vitalii Tatarynov gave a presentation on efficient mobile automation. He discussed three parts of successful automation: writing good code, collaborating with the team, and making a robust infrastructure. For writing good code, he emphasized keeping it simple, reusing patterns and libraries, and leveraging new language features. For infrastructure, he described setting up a Jenkins pipeline for continuous integration and using Appium, Espresso, and OpenSTF for testing. He also demonstrated how to install Jenkins, OpenSTF, and set up a Docker environment for mobile testing automation.
In this slide share, even Beginners can easily learn Robot Framework.
Robot framework is an automation testing framework used for Mobile App automation (can automate both Andriod and iOS) and Web Application automation.
The document announces the release of Specs2 3.0 and provides an overview of the changes, improvements, and additional features. It mentions updates to the user guide, API with changes to nesting and fragments, new reporting capabilities, and support for ScalaCheck. It encourages users to try out the new version and provides examples of ways to contribute back through reporting issues, extending functionality, or adding new specs and tests.
Acceptance Test Drive Development with Robot FrameworkRamdhan Hidayat
Robot Framework are Python based automation testing tool. I am using Robot Framework as acceptance test tool during development process, so that each git commit I made RF will test it automatically for me.
Javascript unit tests with angular 1.xRon Apelbaum
This document discusses using Jasmine for unit testing JavaScript and Angular 1.x applications. It covers setting up a test framework with Jasmine and Karma, writing testable code, and testing Angular services, controllers, directives, and common patterns. Real-world examples are provided for testing Angular services using spies and dependency injection. The document emphasizes writing tests with a Given-When-Then structure, using matchers like toBe() and toEqual(), and spies for method stubs. Links are included for code samples, exercises, and the author's blog for further information on testing Angular applications with Jasmine.
Time has come to announce our first pilot event.
And we are gonna start with our the most favourite topic - test automation <3
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design.
And what occurring problem are we as QA engineers facing all the time? Right! Test automation frameworks.
So we will tell you a bit which design patterns can be used in test automation, why and where (not only Page Object pattern, we promise!) to make your tests shine!
The link to GitHub repo with test automation patterns used is to be shared during the webinar.
If you’re responsible for creating diverse, scalable automated tests but don’t have the time, budget, or a skilled-enough team to create yet another custom test automation framework, then you need to know about Robot Framework!
In this webinar, Bryan Lamb (Founder, RobotFrameworkTutorial.com) and Chris Broesamle (Solutions Engineer, Sauce Labs) will reveal how you can use this powerful, free, open source, generic framework to create continuous automated regression tests for web, batch, API, or database testing. With the simplicity of Robot Framework, in conjunction with Sauce Labs, you can improve your test coverage and time to delivery of your applications.
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...OdessaJS Conf
The document discusses various approaches for performing contract protection on the frontend side such as integration testing, law-driven contract testing, consumer-driven contract testing, and runtime checking. It then focuses on runtime checking, explaining what it is and how it can add an extra step to quality assurance by allowing integration errors to be responded to in real time. Details are provided on Oleksii Pavlenko who is an engineering manager, PhD holder, and former professional basketball player with interests in surfing, snowboarding, and other boardsports.
Robot Framework is an open source test automation framework that can be used to test web, desktop, and mobile applications. It uses a keyword-driven design and has a modular architecture that makes it easy to extend with custom test libraries. Some benefits include being highly reusable, accessible for beginners, and having powerful logging capabilities. However, it does not support while loops or nested for loops, and working with non-string data types can be complicated. The framework operates independently of the system under test and uses test suites made up of test cases that can each be in their own namespace. Custom keywords, variables, and extensions are usually stored separately.
Renaissance of JUnit - Introduction to JUnit 5Jimmy Lu
The document introduces JUnit 5, which was rewritten to address limitations in JUnit 4. JUnit 5 includes JUnit Jupiter for writing tests, JUnit Vintage for running JUnit 3/4 tests, and a unified platform. It provides key features like lambda syntax for assertions, dependency injection, dynamic and nested tests, and an extension model. The platform defines APIs for test discovery, execution and reporting that are used by IDEs and build tools to launch testing frameworks in a modular way.
This document discusses the challenges of automating UI and functional tests for Eclipse-based applications. It describes one company's journey from 2002 to develop their own test automation framework called Q7 to address these challenges. Q7 uses a scripting language called Eclipse Command Language (ECL) that allows non-programmers to automate tests through intuitive commands. The framework handles test initialization, element resolution, and runs tests across operating systems and windowing systems.
Robot Framework is a keyword-based test automation framework suitable for acceptance testing. It requires Python 2.7, pip, Robot Framework, and various libraries like Selenium2 and Requests. The document provides instructions on installing these prerequisites and building sample bots to demonstrate localized and data-driven testing capabilities.
利用 Appium + Robot Framework 實現跨平台 App 互動測試Jeremy Kao
The document discusses using Appium and Robot Framework to implement cross-platform app interaction testing. It covers testing scenarios involving multiple devices, implementing test cases using Appium servers and Robot Framework keywords, and considerations for the long-term such as reusable keywords and abstraction layers. Page object modeling is presented as a way to maintain readable and maintainable tests by abstracting UI elements and interactions.
This document contains a summary of a presentation about Android app development tools. It discusses Genymotion, an Android emulator, and how it provides faster emulation and additional features over the standard emulator. It also covers using Gradle as a build system for Android projects, including how to set up dependency management, signing, and building variants. The presentation provides sample Gradle scripts and links to GitHub repositories with more examples.
Aspect Oriented Programming (AOP) - A case study in AndroidCarlos Anjos
These are the slides for the talk I gave at Codebits hackathon 2011:
https://codebits.eu/intra/s/session/195
It shows how you can raise the level of abstraction and make your life a lot easier by using AOP (with AspectJ).
Examples are for the Android platform, but are easily ported to other java frameworks.
Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)WSO2
To view webinar recording please use below URL:
http://wso2.com/library/webinars/2015/11/integrating-mq-protocols-with-wso2-esb-4.9-rabbitmq-mqtt-kafka/
With the release of WSO2 ESB 4.9.0, we introduced enhanced functionalities in message queuing protocols that are heavily used in modern enterprise integrations. It includes completely new transports such as MQTT (message queuing telemetry transport) and Kafka and improvements to the existing RabbitMQ transport.
In this webinar, we are going to discuss
Improvements to RabbitMQ transport with inbound endpoint support
An introduction to MQTT transport and its usage in WSO2 ESB
Kafka integration with inbound endpoints
A MQTT producer/consumer demo explaining the basic consuming case using MQTT inbound endpoints and basic producer case using MQTT Axis2 transport
Retos del Egresado de Ingeniería Civil ante el paradigma de la sustentabilida...CICMoficial
Este documento discute los retos que enfrentan los egresados de ingeniería civil ante el paradigma de la sustentabilidad. Señala que los ingenieros civiles deben promover el desarrollo sustentable a través de proyectos de infraestructura que mejoren la economía y bienestar público. También destaca la necesidad de mejorar la educación superior y de posgrado para que los ingenieros puedan generar tecnología aplicable a México y desarrollarse a nivel internacional. Concluye que se debe poner más énfasis en
La programación orientada a aspectos (POA) es un nuevo paradigma que permite modularizar conceptos que atraviesan múltiples partes de un sistema, como la sincronización y el manejo de errores. La POA requiere un lenguaje base, lenguajes de aspectos y un tejedor de aspectos. Se diferencia de la programación orientada a objetos en que esta última no puede modularizar efectivamente los conceptos que se entrecruzan. Aunque la POA reduce el acoplamiento y mejora la reutilización, aún adolece de madurez y los len
Design patterns are reusable solutions to common software design problems. There are three main types of design patterns: creational patterns, which create objects for you rather than having you instantiate them directly; structural patterns, which help compose groups of objects into larger structures; and behavioral patterns, which help define communication between objects. Some common design patterns used in Android development include Model-View-Controller (MVC), Model-View-Presenter (MVP), and Observer. MVC separates an application into three components - the model, the view, and the controller. MVP builds on MVC by introducing a presenter component to separate the application logic and flow from the view components. The Observer pattern allows an object to publish changes to its state
This document discusses unit testing PowerShell scripts. It provides examples of unit testing patterns for PowerShell, including abstracting untestable code, mocking cmdlets, isolating file system operations, and testing exceptions. It also discusses tools for PowerShell unit testing like Pester and PSUnit, and integrating tests into a continuous integration build with MSBuild and Psake.
The document discusses several software design patterns that are useful for Android development including:
- Renderer pattern: Decouples rendering process from adapters by separating complex object instantiation from representation using Builder pattern and delegating rendering tasks.
- Repository pattern: Abstracts the data source/origin in a system to decouple client code from implementation details like memory storage, databases, or external APIs.
- Other patterns discussed include Adapter, Memento, Chain of Responsibility, and Model-View-Controller. The document provides examples of how these patterns can solve problems like rendering different video types or saving Android activity state.
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
Python testing like a pro by Keith YangPYCON MY PLT
This document provides an overview of software testing strategies and tools for Python projects. It recommends:
1. Using tools like IPython, linters, yapf, pytest, and hypothesis to find errors early through static and dynamic testing. This allows issues to be identified and addressed before deployment.
2. Enabling easy debugging in production with tools like Sentry, IPython, and alog to monitor and diagnose runtime errors.
3. Preparing for failures through defensive programming techniques and testing backup plans, as "no tested backup plan equals no backup." Thorough testing during development helps maximize uptime and minimize surprises once software is deployed.
original (better quality) on https://docs.google.com/presentation/d/1bnwj8CrFGo5KekONYSeIHySdkoXZiewJxkHcZjXnzkQ/
slides from OpenDaylight Summit Oct 2016 Seattle
This document discusses scaffolding tests using the JMock library. It provides an overview of JMock features for creating mock objects and defining expectations in tests. Specific patterns are demonstrated, such as expecting a sequence of method invocations and using anonymous expectations blocks. The document also discusses test doubles and how to design code for mockability. Examples include testing a scheduler class in isolation using stubs and mocks.
The document discusses the need for a 3D modeling tool based on UML for aspect-oriented software development. It notes that current UML diagrams do not adequately represent the weaving of aspects into base models. A 3D tool could represent cross-cutting concerns as a third dimension to better track how aspects affect models during development. The document also provides background on aspect-oriented programming concepts like pointcuts, advices, and weaving, and examples of how aspects can be modeled in UML.
- The document discusses best practices for micro-benchmarking in Java, including using frameworks like JMH that account for JVM warmup and avoid benchmark overhead.
- It explains common pitfalls like dead code elimination and loop unrolling that can incorrectly optimize away the code being measured.
- An example benchmark compares the performance of ArrayList and LinkedList iteration in different Java versions.
Building modular software with OSGi - Ulf Fildebrandtmfrancis
The document discusses how to build modular software using OSGi by defining modules based on difficult design decisions, implementing principles like dependency injection and the Liskov substitution principle, and measuring modularity through metrics analyzed by tools like ConQAT to compare the desired architecture with the actual implementation. The goals of modularity are to manage complexity through separation of concerns into interchangeable modules and to allow systems to evolve over time through substitutability and extensibility of modules.
Unleashing the Java Tooling in Eclipse IDE - Tips & Tricks!Noopur Gupta
With faster Java releases, it is an exciting time to be a Java developer. The new features in Java are changing the way you write code and to give it a spin, you have the tooling support in your favorite open-source Eclipse IDE ready at your disposal.
To be productive, mastering your IDE is as important as mastering your source code. In this session, I will unleash many tips and tricks that will make your experience more convenient and pleasant while working with Java in Eclipse IDE.
During this talk, you will have many "Ah, I didn't know Eclipse can do that!" moments. Some of the examples include determining who last modified a line of code and when, using trigger points and tracepoints while debugging, working with new constructs like lambdas and records.
Come and learn about the best Eclipse IDE capabilities that you might not be knowing yet. There will be something new for everybody.
This document provides an overview of the Spring framework and its various modules. It discusses Spring concepts like dependency injection and inversion of control. It also covers specific Spring features such as AOP, testing, ORM/Hibernate integration, scheduling, MVC, JMS, email and more. The document includes configuration examples and code snippets for many of these Spring modules.
Mock what? What Mock?Learn What is Mocking, and how to use Mocking with ColdFusion testing, development, and continuous integration. Look at Mocking and Stubbing with a touch of Theory and a lot of Examples, including what you could test, and what you should test… and what you shouldn't test (but might be fun).
These are slides from the Dec 17 SF Bay Area Julia Users meeting [1]. Ehsan Totoni presented the ParallelAccelerator Julia package, a compiler that performs aggressive analysis and optimization on top of the Julia compiler. Ehsan is a Research Scientist at Intel Labs working on the High Performance Scripting project.
[1] http://www.meetup.com/Bay-Area-Julia-Users/events/226531171/
The document discusses typical DevOps pipelines and the problem of integrating vendor package releases into consumer pipelines. It describes different types of vendor package releases and proposes computable release notes and a "missing link" protocol to automate the processing and integration of vendor packages. The demo shows how the missing link processor uses the protocol to parse release notes, identify deployable artifacts and configurations, and map them to a consumer's deployment pipeline.
2013.02.02 지앤선 테크니컬 세미나 - Xcode를 활용한 디버깅 팁(OSXDEV)JiandSon
This document provides debugging tips for Xcode including using breakpoint actions, exception breakpoints, symbolic breakpoints, and static analysis. It compares ARC and non-ARC debugging and discusses diagnostic tools like memory management and logging. Finally, it introduces DTrace as a dynamic tracing facility for macOS and iOS.
This document discusses Spring AOP (Aspect Oriented Programming). It defines key AOP concepts like join points, advice, pointcuts, and aspects. It explains the need for AOP to separate cross-cutting concerns like logging, authentication, and transactions from the main program logic. The types of advice in AOP - before, after returning, after throwing, after, and around advice - are described. The document also covers AOP configuration in Spring and the advantages of AOP like cleaner code, better separation of concerns, and increased code reusability.
Make static instrumentation great again, High performance fuzzing for Windows...Lucas Leong
This document discusses making static binary instrumentation great again for high performance fuzzing on Windows systems. It motivates static instrumentation as an alternative to dynamic approaches, describes the implementation of static instrumentation using IDA Pro and modifying PE files, benchmarks showing comparable performance to WinAFL, and case studies finding vulnerabilities through fuzzing kernel drivers and libraries.
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!
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/
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
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.
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.
Project Management: The Role of Project Dashboards.pdfKarya Keeper
Project management is a crucial aspect of any organization, ensuring that projects are completed efficiently and effectively. One of the key tools used in project management is the project dashboard, which provides a comprehensive view of project progress and performance. In this article, we will explore the role of project dashboards in project management, highlighting their key features and benefits.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
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.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
9. 9CONFIDENTIAL
What is AOP?
•AOP is an extension of OOP
•It increases modularity by the separation of CCCs
•Decreases code redundancy
•Adds functionality using injection without
modifying the original code
•Besides CCC separation it gives us power…
11. 11CONFIDENTIAL
What is AspectJ?
•It’s an AOP extension for Java
•Very powerful
•Easy to learn and use
•Java code is valid AspectJ code
•AspectJ = Java + some magic
12. 12CONFIDENTIAL
AOP terminology
•Advice - injected code
•Join point - a point of execution
•Pointcut - point of injection (set of JPs)
•Aspect - advice + pointcut
•Weaving - process of injection
14. 14CONFIDENTIAL
Android integration
// build.gradle
apply plugin: 'android-aspectj'
buildscript {
dependencies {
classpath 'com.uphyca.gradle:gradle-android-aspectj-plugin:0.9.12'
}
}
// an annotation style AspectJ example aspect
@Aspect
public class LoggerAspect {
@Before("call(* MyClass.myMethod())")
public void onMyMethodCalled() {
Logger.log("My method is called.");
}
}
15. 15CONFIDENTIAL
Advice types
•Before
code will be injected before the
given join point
•After
code will be injected after the
given join point
•Around
code will be injected instead of
the given join point
• AfterReturning, AfterThrowing
@Before("myPointcut()")
public void myAdvice() {
// do something here, e.g. null-guarding
}
@After("call(int *.*View+.get*(..))")
public void myAdvice(JoinPoint joinPoint) {
// A JoinPoint object contains information
about the execution context(method signature,
arguments, containing class, etc.)
}
@Around("myPointcut1() && !myPointCut2()")
public void myAdvice(ProceedingJoinPoint point) {
// Pre processing work..
point.proceed();
// Post processing work..
// Around is perfect e.g. to skip a method
if a parameter is null or to replace
a buggy method in a library
}
22. 22CONFIDENTIAL
AspectJ
Is it good for anything else besides the
separation of CCCs?
•Skip or replace methods
•Prevent or handle errors
•Dependency injection
•Separation of architectural layers
23. 23CONFIDENTIAL
Dependency injection with AOP
Consider Dagger, if you want to satisfy a dependency
you have to:
•make a module
•make a component
•modify the dependent class
24. 24CONFIDENTIAL
Dependency injection with AOP
With AOP you only have to do this:
@Aspect
class DependencyInjector {
@After("execution(Dependent.new(..))")
public void inject(JoinPoint p) {
Dependent dependent = (Dependent) p.getThis();
dependent.dependency = new Dependency();
}
}
26. 26CONFIDENTIAL
Architecture with AOP
A system like this is:
•Modular (e.g. multiple presenters for a view)
•Flexible (e.g. don’t have to use interfaces)
•Easy to test (don’t have to mock anything,
test only what you want)
27. 27CONFIDENTIAL
Tips & tricks
You have to implement something
• that probably will be removed in the future?
Put it to an aspect! You will have to just delete the aspect.
• for only one build variant? Put it to an aspect in that variant!
In many cases you will have to implement only the differences.
Unleash your imagination…
(but don’t try to build the whole system with aspects)
30. 30CONFIDENTIAL
Active users of AOP
•Microsoft
•Oracle
•IBM
•SAP
•Siemens
•Red Hat
•Epam
There is a whole paradigm called Aspect-oriented software development…
31. 31CONFIDENTIAL
Useful links
• http://www.eclipse.org/aspectj
• http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android
• https://github.com/uPhyca/gradle-android-aspectj-plugin
• https://www.youtube.com/watch?v=cq7wpLI0hco
• Google is your friend
32. 32CONFIDENTIAL
Literature
• Robert E. Filman, Tzilla Elrad, Siobhan Clarke, Mehmet Aksit: Aspect-Oriented Software
Development. Addison-Wesley Professional, October 2004, 800 pp. ISBN: 0321219767.
• Renaud Pawlak, Jean-Philippe Retaillé, Lionel Seinturier: Foundations of AOP for J2EE Development.
Apress, September 2005, 352 pp. ISBN: 1590595076.
• Ramnivas Laddad: AspectJ in Action: Practical Aspect-Oriented Programming. Manning Publications,
July 2003, 512 pp. ISBN: 1930110936.
• Siobhan Clarke, Elisa Baniassad: Aspect-Oriented Analysis and Design: The Theme Approach.
Addison-Wesley Professional, March 2005, 400 pp. ISBN: 0321246748.
• Ivar Jacobson, Pan-Wei Ng: Aspect-Oriented Software Development with Use Cases. Addison-Wesley
Professional, December 2004, 464 pp. ISBN: 0321268881.
• Joseph D. Gradecki, Nicholas Lesiecki: Mastering AspectJ: Aspect-Oriented Programming in Java.
Wiley, April 2003, 456 pp. ISBN: 0471431044.
• Russell Miles: Aspectj Cookbook. O'Reilly Media, December 2004, 331 pp. ISBN: 0596006543.
AOP is a huge topic. This is just a quick teaser but at the end You will be able to use it and see if it’s worth to try.
Connections between modules and functionalities can get out of hand really fast.
CCCs are functionalities spreading all over a system (with modules which are heavily dependent and hard to test). They undermine the Single Responsibility Principle and increase code redundancy.
This is AOP in one picture. A system like this would make work easier. But how to achieve it?
AOP was made for CCC separation but that doesn’t mean it’s not good for other things. Enum wasn’t made for singleton creation, but what if You have to make a thread-safe singleton?
Let’s see an AOP implementation
We want to see clean modules. Let the machines work with tangled code.
Static weaving is the most common and the fastest.
Integration and example on one page.
AspectJ is an Eclipse Foundation product. Eclipse users can use keywords instead of annotations and they don’t have to write strings. But this style isn’t bad either and there can be a similar plugin for the Android Studio in the future.
AfterReturning gives us the returned object and AfterThrowing the thrown exception.
* - any characters except the ‘.’
.. – any characters including the ‘.’
+ - any subclasses or subinterfaces
With constructor pointcuts You can e.g. implement dependency injection.
With field access pointcuts You can e.g. implement field validation.
Annotations are handy if You can’t fine common things in join points.
If we mess something up the error manifests during the compilation
If we mess something up the error manifests during the compilation. Virtually we can inject anything and anywhere.
You can also define injections for field accesses. Build time is faster than with Dagger.
If modules don’t know about each other they are not depending on each other
I hope You are interested….
Mainstream languages have AOP support
The official documentation, a good Android-AOP tutorial, the plugin’s repo and an interesting presentation by Gregor Kiczales (one of the fathers of AOP)
There are tons of AOP blogs and tutorials on the web