The document provides an overview of various testing frameworks and libraries that can be used for testing Java code. It discusses frameworks for unit testing like JUnit, Mockito, and Spock. It also covers libraries for integration testing like Arquillian, REST Assured and WireMock. Other topics include parameterizing tests, testing asynchronous code, verifying PDF and XML documents. The document aims to help developers choose the right tools for testing different parts of an application effectively.
This document provides an overview of JUnit 5 and its key features. It discusses:
- The main modules that make up JUnit 5 - JUnit Platform, JUnit Jupiter, and JUnit Vintage.
- How to write tests with JUnit Jupiter including annotations like @Test, extensions for lifecycle methods, parameterized tests, and assertions.
- Support for timeouts, exceptions, nested tests, and parameterized tests using various providers.
This document contains code for a Java GUI application called EasyGUI that allows users to generate automation results for order processing. It contains classes like EasyGUI, EasyButton, and BatchEngine that create a GUI, handle button clicks, and execute automation batches. When the submit button is clicked, it validates the order ID, runs batches to get conversation IDs, account numbers, and CSIXML files, and displays the results. It uses GridBagLayout to arrange components on the main panel and stores selection values in variables like orderID and accountNumber to pass to batch processing methods.
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
The document discusses how Angular components can "parasitize" the React ecosystem. It begins by providing code examples of basic Angular component creation. It then explores terminology related to parasitism and parasitoids. Various approaches for communicating between Angular components using services, properties, and Redux are presented. The document also discusses ideas for libraries that could help convert React components to Angular. It covers tools and patterns for state management in Angular like Redux and MobX. Finally, it discusses how Angular components could potentially "parasitize" the React ecosystem in both helpful and harmful ways.
This document provides an agenda and overview for a mobile agile testing workshop covering both Android and iOS testing. The Android section covers unit, UI, and API testing tools like JUnit, Espresso, and Postman. It also discusses test-driven development. The iOS section similarly covers unit testing with XCTest, UI testing with XCUI, mocking with Cuckoo, and tools like Postman and Jenkins. The document emphasizes why testing is important for catching bugs, making changes confidently, and extending the lifespan of codebases.
Presentation from GWT.create 2015 on how to easily build a REST API that can be consumed via GWT or native mobile clients. Presentation video here: http://gwtcreate.com/videos/#rpc-jersey-resty-gwt
The document provides an overview of various testing frameworks and libraries that can be used for testing Java code. It discusses frameworks for unit testing like JUnit, Mockito, and Spock. It also covers libraries for integration testing like Arquillian, REST Assured and WireMock. Other topics include parameterizing tests, testing asynchronous code, verifying PDF and XML documents. The document aims to help developers choose the right tools for testing different parts of an application effectively.
This document provides an overview of JUnit 5 and its key features. It discusses:
- The main modules that make up JUnit 5 - JUnit Platform, JUnit Jupiter, and JUnit Vintage.
- How to write tests with JUnit Jupiter including annotations like @Test, extensions for lifecycle methods, parameterized tests, and assertions.
- Support for timeouts, exceptions, nested tests, and parameterized tests using various providers.
This document contains code for a Java GUI application called EasyGUI that allows users to generate automation results for order processing. It contains classes like EasyGUI, EasyButton, and BatchEngine that create a GUI, handle button clicks, and execute automation batches. When the submit button is clicked, it validates the order ID, runs batches to get conversation IDs, account numbers, and CSIXML files, and displays the results. It uses GridBagLayout to arrange components on the main panel and stores selection values in variables like orderID and accountNumber to pass to batch processing methods.
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
The document discusses how Angular components can "parasitize" the React ecosystem. It begins by providing code examples of basic Angular component creation. It then explores terminology related to parasitism and parasitoids. Various approaches for communicating between Angular components using services, properties, and Redux are presented. The document also discusses ideas for libraries that could help convert React components to Angular. It covers tools and patterns for state management in Angular like Redux and MobX. Finally, it discusses how Angular components could potentially "parasitize" the React ecosystem in both helpful and harmful ways.
This document provides an agenda and overview for a mobile agile testing workshop covering both Android and iOS testing. The Android section covers unit, UI, and API testing tools like JUnit, Espresso, and Postman. It also discusses test-driven development. The iOS section similarly covers unit testing with XCTest, UI testing with XCUI, mocking with Cuckoo, and tools like Postman and Jenkins. The document emphasizes why testing is important for catching bugs, making changes confidently, and extending the lifespan of codebases.
Presentation from GWT.create 2015 on how to easily build a REST API that can be consumed via GWT or native mobile clients. Presentation video here: http://gwtcreate.com/videos/#rpc-jersey-resty-gwt
The document discusses concepts and examples related to dependency injection in Java EE and CDI frameworks. It begins with basic examples of using @Inject to inject dependencies, and progresses to more advanced topics like producer methods, qualifiers, alternative implementations, custom scopes and extensions. It also discusses how to test CDI components using Arquillian and DeltaSpike. Throughout the document, examples are provided and potential issues or missing pieces are raised for discussion.
The document contains code for a Java class called Test that defines methods for uploading, downloading, and deleting files from a server. The main method calls the upload2 method, which constructs a JSON object from an AttachmentVO class containing file metadata, converts the file to an input stream, and sends a multipart POST request to an upload URL along with the JSON data to upload the file.
This document provides an overview of building NativeScript applications with Angular. It covers setting up a NativeScript project with Angular, using components and bindings, routing, forms, HTTP requests, and testing. While there are some minor differences from web Angular, NativeScript aims to embrace the Angular framework and allow building truly native mobile apps using Angular concepts.
Why Kotlin - Apalon Kotlin Sprint Part 1Kirill Rozov
Kotlin is a modern programming language that was created by JetBrains as a replacement for Java, with some key advantages:
- It simplifies development tasks like creating data classes and working with collections. Kotlin also reduces the amount of code needed for common operations.
- Kotlin works seamlessly with Java code and is fully interoperable. It is also compatible with existing Java tools and platforms.
- The language has seen growing adoption since its 1.0 release in 2016 and is now officially supported by Google for Android development. Many large companies and open source projects use Kotlin due to its improvements over Java.
This document discusses different types of testing for Android applications using Dagger 2, including unit tests, Android component tests, and instrumentation tests. It provides examples of setting up tests with Mockito and Robolectric. Product flavors are used to create a mock implementation for network calls. Instrumentation tests are configured using Espresso to test activities and verify intents. Dependencies, test setup, and common issues like test synchronization are also covered.
My way to clean android - Android day salamanca editionChristian Panadero
Christian Panadero presented an approach called "My way to clean Android" which focuses on clean architecture principles like separation of concerns, testability, and decoupling. The key aspects discussed include using commands, interactors, abstractions, repositories, and data sources to separate layers. Dependencies follow a one-way rule from upper to lower layers. Examples demonstrate how to model projects with clean architecture, including MVP for the UI, repositories to abstract data sources, and strategies like caching. Advice includes working with abstractions, good naming, and starting in the correct layer. The clean code approach and references from experts like Uncle Bob and others are cited. Source code is provided on GitHub for further review.
This document discusses the history of asynchronous programming and how reactive programming with RxJS addresses limitations of previous approaches. It covers callback hell with nested callbacks, promises, and async/await. RxJS introduces Observables that allow streaming and combining of asynchronous data over time. The document demonstrates building basic Observable and Observer classes as well as an operator. Reactive programming with RxJS makes asynchronous code more readable and addresses issues like cancellation and error handling.
The document discusses automated testing of Android applications using Espresso. It covers why automated testing is important, where to use Espresso vs other frameworks like Robolectric depending on the app layer being tested, basic Espresso testing code examples, and 5 tips for writing effective Espresso tests including using page objects, minimizing dependencies, making instances configurable, wrapping Espresso APIs, and avoiding sleeps for asynchronous waits.
The document discusses concepts related to productive, simple, and modern application development. It introduces the concepts of dependency injection and contextual conversations in CDI, including scopes, qualifiers, stereotypes, events, and extensions. It also discusses integrating Spring components into CDI and the goals of the Seam 3 Spring module.
Tomasz Polanski - Automated mobile testing 2016 - Testing: why, when, howTomasz Polanski
The document discusses testing and some common objections to writing tests. It addresses concerns like tests taking too much time, specs changing too often, tests being difficult to understand, and whether there are too many tests or too much code. It provides examples of simple, readable tests and discusses test-driven development principles like writing just enough tests to feel confident in changes without going overboard.
Dagger is a dependency injection framework that helps manage object creation and dependencies. It allows injecting dependencies into classes rather than having them directly instantiate dependencies. This improves testability. The document discusses how Dagger is used at the New York Times, including setting up modules, components, scopes like activity scope, and testing with Dagger. Qualifiers are used to provide different implementations for different flavors. Modules provide dependencies, components compose modules and inject dependencies. This architecture allows scaling across build variants and libraries while improving testability and code organization.
This document provides an overview of Java 8 features such as lambda expressions, streams, and optional. Key points include:
- Java 8 introduced lambda expressions to provide concise syntax for anonymous functions. Common functional interfaces like Predicate and Function are used.
- Streams allow processing collections in a functional way through intermediate and terminal operations like map, filter, collect. They are lazy evaluated and cannot mutate data.
- Optional is a wrapper for values that may be null, avoiding null checks in favor of functional-style operations like orElse, ifPresent.
This document discusses various techniques for working with multimedia in Android applications, including detecting device capabilities, loading images from local storage and remote URLs, playing audio files from assets and raw resources, and improving performance through caching and asynchronous loading. It provides code examples for checking if a device has a front-facing camera, loading images while avoiding out of memory errors, playing audio files from assets, and using an AsyncTask to load images asynchronously to avoid blocking the UI. It also discusses potential memory leak issues and strategies for building an image cache.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)Danny Preussler
1. The document provides 15 tips for improving unit tests, focusing on readability, consistent naming conventions, using matchers over basic asserts, moving setup code out of test methods, adding matchers for custom models, using null objects to reduce test garbage, and writing tests that fail to ensure quality code.
2. Key tips include giving tests readable names, reducing noise in tests, implementing equals on test models, using reflection code fluently, and inverting control for testability even if it breaks encapsulation.
3. The document emphasizes that tests should prioritize readability and maintainability over strict adherence to "unit" sizes, and that if all tests pass without failing, better tests need to be written to
Demystifying dependency Injection: Dagger and ToothpickDanny Preussler
Dependency Injection, that's the thing that Dagger2 does, right? For most of us, it's black magic. Let's look deeper how DI works. And then we better understand the frameworks that are out there. This session introduce Toothpick that was created this year and is already used by millions of users as driven a lot by engineers at Groupon.
What was their need? What's wrong with Dagger?
Toothpick was designed to bring goodies from Guice to modern mobile world. It focuses on scopes and unit testing without loosing performance as Roboguice did.
DroidParts is a library that helps handle common tasks in Android development such as:
- SQL operations, JSON serialization/deserialization, HTTP interactions, loading and caching images, background processing, logging, and dependency injection.
It provides solutions for these tasks through modular "parts" including an ORM, JSON serializer, REST client, image fetcher, logger, and more. The library aims to provide a simple yet flexible API and avoid reimplementing core Java and OO principles.
This document discusses dependency injection in CDI. It begins with a brief history of CDI and then covers the different ways that dependencies can be injected including via attributes, constructors, setters, qualifiers and programmatic lookup. It also discusses how to inject producers like entity managers and how CDI enables loose coupling and strong typing. The document concludes by emphasizing that CDI is capable of much more than just dependency injection.
Contextual communications and why you should care - Droidcon DEMarcos Placona
Communication is the key to everything. From the time you wake up and and press a button on your coffee-machine to tell you to make you a coffee, to when you talk to your other half to make plans for a night out, a trip or your own wedding. Imagine a world where each time when you wanted to do your grocery shopping, you first had to stop at the bank to make sure the funds were clear. Or whenever you wanted to drive from home to work you had to first stop at a petrol station to check whether your car had enough petrol to make the journey.
In this talk I will show you some common scenarios where we are currently doing just that with our websites or mobile apps and not even thinking about it. We will then look at some ways we can avoid that and bring context back onto our applications.
GeeCON 2017 - TestContainers. Integration testing without the hassleAnton Arhipov
TestContainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
This document discusses key concepts and principles for organizing a curriculum review at a school. It addresses factors that should guide curriculum choices like mission and vision statements. It also discusses curriculum models and how assessment should inform curriculum planning. Additional topics covered include the importance of transferable skills, 21st century learning skills, and monitoring curriculum implementation through lesson observations and student interviews. The overall purpose is to provide guidance on conducting a thorough and meaningful curriculum review process.
Máster Comunicación Digital 2017: Negocio electrónico y tendencias de futuroCelestino Güemes Seoane
Este documento presenta información sobre el negocio electrónico. Explica la definición, evolución histórica y situación actual del negocio electrónico y comercio electrónico. También describe las características diferenciales de la tecnología del negocio electrónico y analiza el impacto del crecimiento de Internet y las diferentes fases por las que ha pasado el negocio electrónico a lo largo de la historia. Finalmente, presenta los objetivos y contenidos de la presentación sobre negocio electrónico.
The document discusses concepts and examples related to dependency injection in Java EE and CDI frameworks. It begins with basic examples of using @Inject to inject dependencies, and progresses to more advanced topics like producer methods, qualifiers, alternative implementations, custom scopes and extensions. It also discusses how to test CDI components using Arquillian and DeltaSpike. Throughout the document, examples are provided and potential issues or missing pieces are raised for discussion.
The document contains code for a Java class called Test that defines methods for uploading, downloading, and deleting files from a server. The main method calls the upload2 method, which constructs a JSON object from an AttachmentVO class containing file metadata, converts the file to an input stream, and sends a multipart POST request to an upload URL along with the JSON data to upload the file.
This document provides an overview of building NativeScript applications with Angular. It covers setting up a NativeScript project with Angular, using components and bindings, routing, forms, HTTP requests, and testing. While there are some minor differences from web Angular, NativeScript aims to embrace the Angular framework and allow building truly native mobile apps using Angular concepts.
Why Kotlin - Apalon Kotlin Sprint Part 1Kirill Rozov
Kotlin is a modern programming language that was created by JetBrains as a replacement for Java, with some key advantages:
- It simplifies development tasks like creating data classes and working with collections. Kotlin also reduces the amount of code needed for common operations.
- Kotlin works seamlessly with Java code and is fully interoperable. It is also compatible with existing Java tools and platforms.
- The language has seen growing adoption since its 1.0 release in 2016 and is now officially supported by Google for Android development. Many large companies and open source projects use Kotlin due to its improvements over Java.
This document discusses different types of testing for Android applications using Dagger 2, including unit tests, Android component tests, and instrumentation tests. It provides examples of setting up tests with Mockito and Robolectric. Product flavors are used to create a mock implementation for network calls. Instrumentation tests are configured using Espresso to test activities and verify intents. Dependencies, test setup, and common issues like test synchronization are also covered.
My way to clean android - Android day salamanca editionChristian Panadero
Christian Panadero presented an approach called "My way to clean Android" which focuses on clean architecture principles like separation of concerns, testability, and decoupling. The key aspects discussed include using commands, interactors, abstractions, repositories, and data sources to separate layers. Dependencies follow a one-way rule from upper to lower layers. Examples demonstrate how to model projects with clean architecture, including MVP for the UI, repositories to abstract data sources, and strategies like caching. Advice includes working with abstractions, good naming, and starting in the correct layer. The clean code approach and references from experts like Uncle Bob and others are cited. Source code is provided on GitHub for further review.
This document discusses the history of asynchronous programming and how reactive programming with RxJS addresses limitations of previous approaches. It covers callback hell with nested callbacks, promises, and async/await. RxJS introduces Observables that allow streaming and combining of asynchronous data over time. The document demonstrates building basic Observable and Observer classes as well as an operator. Reactive programming with RxJS makes asynchronous code more readable and addresses issues like cancellation and error handling.
The document discusses automated testing of Android applications using Espresso. It covers why automated testing is important, where to use Espresso vs other frameworks like Robolectric depending on the app layer being tested, basic Espresso testing code examples, and 5 tips for writing effective Espresso tests including using page objects, minimizing dependencies, making instances configurable, wrapping Espresso APIs, and avoiding sleeps for asynchronous waits.
The document discusses concepts related to productive, simple, and modern application development. It introduces the concepts of dependency injection and contextual conversations in CDI, including scopes, qualifiers, stereotypes, events, and extensions. It also discusses integrating Spring components into CDI and the goals of the Seam 3 Spring module.
Tomasz Polanski - Automated mobile testing 2016 - Testing: why, when, howTomasz Polanski
The document discusses testing and some common objections to writing tests. It addresses concerns like tests taking too much time, specs changing too often, tests being difficult to understand, and whether there are too many tests or too much code. It provides examples of simple, readable tests and discusses test-driven development principles like writing just enough tests to feel confident in changes without going overboard.
Dagger is a dependency injection framework that helps manage object creation and dependencies. It allows injecting dependencies into classes rather than having them directly instantiate dependencies. This improves testability. The document discusses how Dagger is used at the New York Times, including setting up modules, components, scopes like activity scope, and testing with Dagger. Qualifiers are used to provide different implementations for different flavors. Modules provide dependencies, components compose modules and inject dependencies. This architecture allows scaling across build variants and libraries while improving testability and code organization.
This document provides an overview of Java 8 features such as lambda expressions, streams, and optional. Key points include:
- Java 8 introduced lambda expressions to provide concise syntax for anonymous functions. Common functional interfaces like Predicate and Function are used.
- Streams allow processing collections in a functional way through intermediate and terminal operations like map, filter, collect. They are lazy evaluated and cannot mutate data.
- Optional is a wrapper for values that may be null, avoiding null checks in favor of functional-style operations like orElse, ifPresent.
This document discusses various techniques for working with multimedia in Android applications, including detecting device capabilities, loading images from local storage and remote URLs, playing audio files from assets and raw resources, and improving performance through caching and asynchronous loading. It provides code examples for checking if a device has a front-facing camera, loading images while avoiding out of memory errors, playing audio files from assets, and using an AsyncTask to load images asynchronously to avoid blocking the UI. It also discusses potential memory leak issues and strategies for building an image cache.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
15 tips to improve your unit tests (Droidcon Berlin 2016 Barcamp)Danny Preussler
1. The document provides 15 tips for improving unit tests, focusing on readability, consistent naming conventions, using matchers over basic asserts, moving setup code out of test methods, adding matchers for custom models, using null objects to reduce test garbage, and writing tests that fail to ensure quality code.
2. Key tips include giving tests readable names, reducing noise in tests, implementing equals on test models, using reflection code fluently, and inverting control for testability even if it breaks encapsulation.
3. The document emphasizes that tests should prioritize readability and maintainability over strict adherence to "unit" sizes, and that if all tests pass without failing, better tests need to be written to
Demystifying dependency Injection: Dagger and ToothpickDanny Preussler
Dependency Injection, that's the thing that Dagger2 does, right? For most of us, it's black magic. Let's look deeper how DI works. And then we better understand the frameworks that are out there. This session introduce Toothpick that was created this year and is already used by millions of users as driven a lot by engineers at Groupon.
What was their need? What's wrong with Dagger?
Toothpick was designed to bring goodies from Guice to modern mobile world. It focuses on scopes and unit testing without loosing performance as Roboguice did.
DroidParts is a library that helps handle common tasks in Android development such as:
- SQL operations, JSON serialization/deserialization, HTTP interactions, loading and caching images, background processing, logging, and dependency injection.
It provides solutions for these tasks through modular "parts" including an ORM, JSON serializer, REST client, image fetcher, logger, and more. The library aims to provide a simple yet flexible API and avoid reimplementing core Java and OO principles.
This document discusses dependency injection in CDI. It begins with a brief history of CDI and then covers the different ways that dependencies can be injected including via attributes, constructors, setters, qualifiers and programmatic lookup. It also discusses how to inject producers like entity managers and how CDI enables loose coupling and strong typing. The document concludes by emphasizing that CDI is capable of much more than just dependency injection.
Contextual communications and why you should care - Droidcon DEMarcos Placona
Communication is the key to everything. From the time you wake up and and press a button on your coffee-machine to tell you to make you a coffee, to when you talk to your other half to make plans for a night out, a trip or your own wedding. Imagine a world where each time when you wanted to do your grocery shopping, you first had to stop at the bank to make sure the funds were clear. Or whenever you wanted to drive from home to work you had to first stop at a petrol station to check whether your car had enough petrol to make the journey.
In this talk I will show you some common scenarios where we are currently doing just that with our websites or mobile apps and not even thinking about it. We will then look at some ways we can avoid that and bring context back onto our applications.
GeeCON 2017 - TestContainers. Integration testing without the hassleAnton Arhipov
TestContainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
This document discusses key concepts and principles for organizing a curriculum review at a school. It addresses factors that should guide curriculum choices like mission and vision statements. It also discusses curriculum models and how assessment should inform curriculum planning. Additional topics covered include the importance of transferable skills, 21st century learning skills, and monitoring curriculum implementation through lesson observations and student interviews. The overall purpose is to provide guidance on conducting a thorough and meaningful curriculum review process.
Máster Comunicación Digital 2017: Negocio electrónico y tendencias de futuroCelestino Güemes Seoane
Este documento presenta información sobre el negocio electrónico. Explica la definición, evolución histórica y situación actual del negocio electrónico y comercio electrónico. También describe las características diferenciales de la tecnología del negocio electrónico y analiza el impacto del crecimiento de Internet y las diferentes fases por las que ha pasado el negocio electrónico a lo largo de la historia. Finalmente, presenta los objetivos y contenidos de la presentación sobre negocio electrónico.
The document discusses various topics related to designing organisations for the future including purpose, culture, trust, integrity, motivation, and leadership. It provides quotes and perspectives on creating human-centered organizations where workers have autonomy, feel a sense of purpose, and where relationships and trust are prioritized over rigid hierarchies. The goal is to design adaptive organizations that can thrive in today's VUCA world.
Research Tools for Research Cycle: From SEARCH to DISSEMINATIONNader Ale Ebrahim
The document provides information about research tools that can help researchers throughout the research cycle from searching literature to disseminating results. It discusses four main categories of tools: 1) tools for searching literature, 2) tools for writing papers, 3) tools for targeting suitable journals, and 4) tools for enhancing visibility and impact. The presentation then goes on to describe some specific tools under each category such as reference management tools, plagiarism checking tools, citation tracking tools and journal selector tools.
Este documento resume una entrevista con Francisco Trujillo Pons, autor del libro "España frente al Acoso Laboral. Un estudio comparativo con Canadá". Trujillo explica que Canadá es un buen modelo para España en la regulación del acoso laboral, ya que protege mejor a los trabajadores. Su libro analiza las leyes de acoso laboral en España y Canadá, encontrando que Canadá ofrece más derechos a los empleados como estar libres de acoso y mayor compensación si son víctimas. Trujillo cree que las leyes españolas
O documento enfatiza a importância da fé e confiança em Deus, que cuida de todos nós e faz milagres quando necessário, e pede para abandonarmos nossa vida em Sua divina providência.
The document summarizes the community programs and social initiatives of HCL Foundation. It discusses how HCL Foundation is supported by employee contributions and aims to empower communities through various programs focused on education, skills training, livelihood support, and advocacy. Key programs discussed include HCL Gurukul which provides after-school tutoring and education support to youth, HCL Yuvakendra which offers skills training and digital literacy courses, and sustainable livelihood programs that provide vocational training and entrepreneurship opportunities to women. The foundation has positively impacted over 190,000 individuals through its work.
Accelerating Insight - Smart Data Lake Customer Success StoriesCambridge Semantics
At Gartner Data & Analytics Summit 2017 Alok Prasad, President, was joined by Peter Horowitz of PricewaterhouseCoopers in presenting a session on how Cambridge Semantics' in-memory, massively parallel, semantic graph-based platform delivers an accelerating edge to data-driven organizations, while maintaining trust with security and governance.
ChatBot Trendleri : Yeni Bir Mobil DeneyimAydin Ozcekic
Bu sunumda son dönemde çok popüler olan ChatBot trendleri ile ilgili bilgiler paylaşılmıştır. hızlıYOL Teknoloji ChatBot konusunda yaptığı çalışmalar ile bu konuda deneyimi arttırmayı hedeflemektedir.
This is my presentation at DevNexus 2017 in Atlanta.
Containers are a default choice for packaging and deploying Microservices.
You will understand why containers are a natural fit for microservices, the value a container platform brings to the table, how to structure your microservices running as containers on an enterprise ready Kubernetes platform aka, OpenShift. We will also look at a sample microservices application packaged and running as containers on this platform.
Popular lecturer Mary Bolingbroke returns for a one day CPD event looking into Gut Biomes, their wider influence on other systems and the implications for our Osteopathic practice. Presented in an iconic Glasgow venue, we look forward to seeing Mary again and continuing our post grad Osteopathic studies into the immune system and our relationship to it.
Sat 6th May 9.30am - 5.30pm, Arlington Baths, Arlington St., Glasgow G3 6DT; £110 incl lunch
Contact cranialgroupscotland@gmail.com for booking & more details
Barreras para el aprendizaje y la participacion. maestria en educacion especi...Virita Snicker
El documento describe el concepto de "barreras para el aprendizaje y la participación" y cómo este enfoque reconoce que los factores contextuales pueden limitar el acceso a la educación de los estudiantes. Define las barreras como aquellos factores del contexto que restringen las oportunidades de aprendizaje y se manifiestan a través de la interacción del individuo con su entorno, lo que a menudo conduce a la discriminación. El enfoque de inclusión busca identificar y eliminar estas barreras para garantizar que todos los estudiantes,
Engineering DevOps Right the First TimeMarc Hornbeek
Marc Hornbeek is an experienced DevOps consultant with over 39 years of experience in IT architecture, development, and management. He discusses engineering DevOps right from the start through a top-down/middle-out approach focusing on leadership alignment, gap assessment, and process re-engineering to optimize agility, efficiency, quality and stability. Key aspects include modeling the DevOps pipeline, analyzing elements like tools and metrics, and controlling technology and process evolution over time.
[Angularjs 도입 선택 가이드]
본 문서는 네이버 개발자 블로그 hello world 를 통해서 공개되었습니다.
[문서개요]
이 문서는 AngularJS를 사용한 애플리케이션 개발을 계획하고 있거나 AngularJS 도입을 고려 중일 때 참고 할 만한 내용을 기술한다. AngularJS를 사용하는 방법을 다루지는 않는다.
이 문서의 모든 내용은 AngularJS 버전 1.3.x를 기준으로 작성되었다.
NVIDIA compute GPUs and software toolkits are key drivers behind major advancements in machine learning. Of particular interest is a technique called "deep learning", which utilizes what are known as Convolution Neural Networks (CNNs) having landslide success in computer vision and widespread adoption in a variety of fields such as autonomous vehicles, cyber security, and healthcare. In this talk is presented a high level introduction to deep learning where we discuss core concepts, success stories, and relevant use cases. Additionally, we will provide an overview of essential frameworks and workflows for deep learning. Finally, we explore emerging domains for GPU computing such as large-scale graph analytics, in-memory databases.
https://tech.rakuten.co.jp/
The document contains implied probabilities for settlement prices of WTI crude oil between 2017 and 2020 based on futures market data from June 2, 2017. It shows the estimated probabilities of prices falling within different ranges, such as between $60-70 per barrel, each year out through 2020. For example, in 2017 there was a 64% probability of prices being between $60-70, with risks of prices falling below $60 or above $70 also shown.
Organizations are looking for mobile accessibility standards but is mobile different than desktop? Learn about is new in WCAG 2.1, Europe and around the world.
PowerMock is an open source Java framework that allows mocking of static methods, final classes, and private methods. It extends EasyMock and JUnit to enable these additional types of mocking. The document provides details on how to add PowerMock dependencies to Maven and Ant projects, examples of unit testing with and without mocks, and techniques like capturing arguments and emulating code in mock objects. It also discusses skipping static initialization and the F.I.R.S.T. properties that unit tests should have.
TDD, BDD, ATDD are all methodologies that enable incremental design that is suitable for Agile environments. It seems that every day a new xDD methodology is born with the promise to be better than what came before. Should you use behaviour-driven tests or plain old unit tests? Which methodology is better? And how exactly would it benefit the development life cycle?
In this session, Dror will help to sort out the various methodologies – explaining where they came from, the tools they use, and discussing how and when to use each one. Here we will once and for all answer the question as to whether or not there’s one “DD” to rule them all.
1. The document discusses good and bad practices for writing unit tests. It emphasizes that tests should verify the expected behavior, fail clearly when something goes wrong, and use mocks and isolation to focus on the code being tested.
2. Some examples of bad tests shown include tests that don't make assertions or assertions that don't provide useful information on failure. Real objects are also used instead of mocks, obscuring the test.
3. Good practices include using mocks to isolate the code being tested, making sure tests fail clearly when something goes wrong, and focusing tests on expected behavior through clear assertions. Automated testing, fixing broken tests, and mastering testing tools are also emphasized.
Secret unit testing tools no one ever told you aboutDror Helper
There are more to unit testing than using a unit testing framework – in order to succeed you want to use the right tools for the job. There are a few tools that almost no one talks about – some enabling creating of top-notch, robust unit tests. Some will help you run your tests better and faster.
In this session I’ll explain about the inevitable maintainability problems developers face when writing and maintaining huge unit testing suits and how unit level BDD, AutoMocking, and Continuous Execution can help take control over your tests.
The document provides an overview of Spring MVC, comparing it to Struts, and detailing controllers, form handling, validation, configuration, and view technologies. Spring MVC controllers return ModelAndView objects and support dependency injection, making them easier to test than Struts actions. Both frameworks allow mapping requests to methods and configuring views, but Spring uses POJOs while Struts requires backing forms.
The document discusses testing in Android applications. It recommends moving as much logic as possible to the Java Virtual Machine (JVM) to allow for easier unit testing. This includes business logic, models, and network code using Retrofit. It also suggests using Espresso for UI testing on Android and monkeyrunner for basic OS interaction testing. The document acknowledges testing on Android can be painful due to speed and fragmentation issues, and proposes compromises like helping quality assurance engineers with tools like the Bee library.
Here are some suggestions to improve the test method name:
- shouldReturnNullWhenQueryReturnsNull
- shouldPassNullFromDaoWhenQueryReturnsNull
Using "should" makes the intent clearer - we expect the method to return null under certain conditions. Describing those conditions ("when query returns null") in the name provides more context than a generic "testQuery".
Overall, test method names should clearly communicate what is being tested and under what conditions we expect the test to pass or fail. This helps readers understand the purpose and focus of each test.
This document provides an overview of various testing frameworks and concepts used for Android testing. It discusses JUnit, Mockito, PowerMock, Robolectric, and Espresso - the most popular tools for unit, integration, and UI testing of Android apps. For each tool, it provides brief descriptions of their purpose and capabilities. It also includes examples demonstrating how to write tests using JUnit, Mockito, and PowerMock. The document aims to explain what these testing tools are and how they can be used for testing Android applications.
This document introduces Test Driven Development (TDD) for MapReduce jobs using the MRUnit testing framework. It discusses how TDD is difficult for Hadoop due to its distributed nature but can be achieved by abstracting business logic. It provides examples of using MRUnit to test mappers, reducers and full MapReduce jobs. It also discusses testing with real data by loading samples into the local filesystem or using a WindowsLocalFileSystem class to enable permission testing on Windows.
Quality assurance and testing are very important in a life cycle of any application. Although, by far not all developers understand the significance of tests.
In this presentation, we cover the basic testing practices for developers. The following tools are discussed: JUnit, Mockito, Hamcrest, JsTestDriver, DBUnit, Arquillian, SoapUI, Selenium.
This document provides an overview and instructions for developing a real application called SportsStore using ASP.NET MVC. It discusses starting the domain model by adding a Product model class and creating an abstract IProductsRepository interface. It also covers setting up projects, installing packages, adding references between projects, and configuring the dependency injection container.
Neo4j Stored Procedure Training Part 2Max De Marzi
This document provides instructions for using Gatling to perform performance testing on Neo4j. It describes how to set up a Gatling simulation class to make HTTP requests to Neo4j, load test different Cypher queries, and view the results. It also covers using YourKit Java Profiler to profile the Cypher queries and view where time is being spent. Various Cypher queries to find weighted paths between users are demonstrated and improved through using different evaluators and expanders to filter relationships and prune the search space.
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...solit
Виктор Короневич, Минск. Senior Software Test Automation Engineer with 3+ years of experience specializing in automation on Java, http://www.linkedin.com/in/agileseph
«Автоматизация тестирования сложных систем: mixed mode automated test case.» Использование Selenium + jUnit + Frank + custom java tools для тестирования Web + DB + Web Services + iOS. Development секция.
Dependency Injection for Android @ Ciklum speakers corner Kiev 29. May 2014First Tuesday Bergen
We are happy to invite you to the Speakers’ Corner today, on Thursday May 29, from 18.30 till 19.30 at SkyPoint to meet Thomas Vervik, Head of Development Bipper Communications who will talk on “How to save money on QA - Dependency Injection and automated testing on Android”
Thomas is Head of Development for Bipper Communications, and has been managing the company's team in Kiev since February 2012. Originally a seasoned Java server backend/frontend developer, he has the last two years started mobile development, first with HTML 5 and later Android.
Mobile development has since its birth around 2008 gone from simple apps to more complex enterprise similar software. The increase in size and complexity yields the need for structuring the code differently in order to handle the new complexity. The tools used to handle this complexity has been applied to server side development for years, but mobile development has been lagging behind.
But not anymore. New frameworks built on proven paradigms are emerging, and in this Speakers Corner we will introduce Dependency Injection for Android, the motivation for its use, and one of the implementations - Dagger. Dependency Injection has several advantages, but in this presentation we will focus on how it enables to write proper automated tests.
We are happy to invite you to the Speakers’ Corner today, on Thursday May 29, from 18.30 till 19.30 at SkyPoint to meet Thomas Vervik, Head of Development Bipper Communications who will talk on “How to save money on QA - Dependency Injection and automated testing on Android”
Thomas is Head of Development for Bipper Communications, and has been managing the company's team in Kiev since February 2012. Originally a seasoned Java server backend/frontend developer, he has the last two years started mobile development, first with HTML 5 and later Android.
Mobile development has since its birth around 2008 gone from simple apps to more complex enterprise similar software. The increase in size and complexity yields the need for structuring the code differently in order to handle the new complexity. The tools used to handle this complexity has been applied to server side development for years, but mobile development has been lagging behind.
But not anymore. New frameworks built on proven paradigms are emerging, and in this Speakers Corner we will introduce Dependency Injection for Android, the motivation for its use, and one of the implementations - Dagger. Dependency Injection has several advantages, but in this presentation we will focus on how it enables to write proper automated tests.
QA your code: The new Unity Test Framework – Unite Copenhagen 2019Unity Technologies
Are you involved in testing or QA on projects in Unity? In these slides, you'll get an overview of the state of Unity for all things testing-related, and have the opportunity to share your stories of success, failure, pain, and glory. Learn from your fellow developers and give feedback on how Unity could help you hold your projects to a higher standard of quality. You will also get an introduction to the newest features in the Test Framework.
Speakers:
Christian Warnecke - Unity
Richard Fine - Unity
Watch the session on YouTube: https://youtu.be/wTiF2D0_vKA
The document discusses mutation testing as a way to evaluate test effectiveness beyond just code coverage metrics. It introduces the concept of mutation testing, where automated tools make small changes or "mutations" to the production code and tests are run to see if they can detect the changes. This helps identify weaknesses or gaps in test coverage. The document provides examples of mutation tools for Java and other languages and tips for getting started with mutation testing, including performance tweaking and integrating it into continuous integration pipelines. Mutation testing can help improve test quality, especially for safety critical systems, but should start small and be tweaked for performance.
The secret unit testing tools no one ever told you aboutDror Helper
There are more to unit testing than using a unit testing framework - in order to succeed you want to use the right tools for the job. There are a few tools that almost no one talks about - some enabling creating of top-notch, robust unit tests. Some will help you run your tests better and faster. In this session I'll explain about the inevitable maintainability problems developers face when writing and maintaining huge unit testing suits and how unit level BDD, AutoMocking, and Continuous Execution can help take control over your tests.
The document discusses unit testing and provides examples of unit tests for different types of code including:
- A simple unit test for a "User" class that tests getter and setter methods.
- A more complex unit test for a "UserManager" class that tests for exceptions when saving duplicate users.
- A database unit test using the DBUnit framework to test saving a user object to the database and validating the expected data.
Aug '22 Drone Software Meetup shows how to label, train, deploy and test a machine learning model to count cars. Links to Jupyter Notebook and Drone source code for download.
Walkthrough of the DJI Mobile SDK tutorials that we converted from Java to Kotlin. See https://youtu.be/f5fWvFD5rwc for recording of the Drone Software SDK meetup
This session walks you through how our interns took some video from a drone and turned it into an Android App to count cars in a parking lot. This is a practical introduction to drone SDKs, Tensorflow and how to combine the two to do object detection on your Android phone from a drone.
Getting started with tensor flow datasets Godfrey Nolan
TensorFlow Datasets provides a variety of datasets that can be used for tasks like image classification, object detection, and question answering. It offers datasets for images, audio, text, and video. The library aims for simplicity, performance, determinism, customizability. Example code is provided to load datasets and split them into training, validation, and test sets. Popular image classification datasets included are CIFAR-10, MNIST, and ImageNet while COCO, KITTI, and OpenImages support object detection.
Using ML to make your UI tests more robustGodfrey Nolan
Common practice is to write lots of unit tests and API tests and only a few User Interface tests. Why? Because UI tests are brittle. Change one thing and all the other tests unravel. But what if we could use ML to help us out. Many of our apps have the same functionality such as login, checkout, share, pay etc. In this session we'll look at how we can use Object Detection and labeling techniques to make our UI tests more robust with a fraction of the code.
The document discusses Java best practices for writing high quality code. It recommends following principles like FIRST for unit testing - making tests fast, isolated, repeatable, self-verifying, and timely. It also recommends techniques like test-driven development, where you write a failing test first before producing the minimum amount of code to pass that test. Continuous integration, code coverage metrics, and refactoring existing code gradually with more tests are presented as ways to improve code quality over time. Finally, several books on software design patterns, refactoring, and effective Java practices are referenced for further guidance.
The document discusses using drones and AI to count sheep by taking images of sheep with a drone, training a neural network model to identify sheep in images, and deploying the model on the drone to count sheep in real time and validate the counts. Key components include the DJI Mobile SDK, Google Tensorflow, collecting training data, training and evaluating models in Google Cloud, and deploying the model on the drone to test and validate sheep counts.
The document discusses securing mobile apps for drones. It covers how drones can be hacked, such as connecting via WiFi or RF hijacking. Famous drone hacks are mentioned but not described. Mobile apps, manufacturers' SDKs, and the OWASP top 10 mobile risks are reviewed. Best practices discussed include not storing sensitive data locally and using SSL pinning. Resources for drone development and mobile security are provided. The presentation aims to help developers write more secure mobile apps for controlling drones.
The document discusses Agile testing techniques for Swift including unit testing with XCTest and GUI testing with XCUI. It provides details on mocking with Cuckoo, API testing with Postman, integrating tests with Jenkins, and measuring quality with SonarQube. Sample code is shown for unit tests, API tests, and GUI tests of a sample ETAMock app. Continuous integration with Jenkins and SonarQube is demonstrated along with links for further information.
The document discusses refactoring code to improve its structure and readability without changing its external behavior. It defines refactoring as restructuring software to make it easier to understand and modify. The goals of refactoring are to reduce technical debt by improving code quality. Examples show refactoring an Android app by extracting methods, renaming variables for clarity, and converting the architecture to MVP pattern to separate concerns. Lessons recommend writing unit tests first and using metrics as a guide rather than mandate when refactoring.
From Maps to Apps the Future of Drone TechnologyGodfrey Nolan
Look at the current state of the Drone market for mobile developers, some examples of what you legally can and cannot do and talk about the potential opportunities available in this new app market.
This presentation discusses integrating Quickbooks data with Tableau visualization software. It covers new features in Tableau 10 like cluster analysis and cross database joins. It also explains how to export a Quickbooks company file to Quickbooks online, connect Tableau 10 to the online Quickbooks data, and use sample data to learn how to visualize Quickbooks financial information in Tableau dashboards and charts.
The document discusses a Tableau Meetup agenda on network graphs. The agenda includes an introduction to RIIS, an overview of what network graphs are, examples of network graphs in Tableau, a demo, resources, and plans for next month's meetup. It provides several links to external sites showing examples of network graphs and how to create them in Tableau and tools like Neo4j and NodeXL.
The document discusses various security issues related to mobile applications including weak server-side controls, insecure data storage, insufficient transport layer protection, unintended data leakage, poor authorization and authentication, broken cryptography, client-side injection, security decisions via untrusted input, improper session handling, and lack of binary protections. It provides examples of issues like hardcoded passwords, insecure data storage on devices, and cross-site scripting vulnerabilities. The document also outlines fixes like encryption, access control, SSL pinning, parameterized queries, and disabling JavaScript to address these issues.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
24. dependencies {
// Unit testing dependencies.
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
}
@SmallTest
public class DatabaseTest {
private User joeSmith = new User("Joe", "Smith");
private final int USER_ID = 1;
@Test
public void testMockUser() {
//mock SQLHelper
SQLHelper dbHelper = Mockito.mock(SQLHelper.class);
//have mockito return joeSmith when calling dbHelper getUser
Mockito.when(dbHelper.getUser(USER_ID)).thenReturn(joeSmith);
//Assert joeSmith is returned by getUser
Assert.assertEquals(dbHelper.getUser(USER_ID), joeSmith);
}
}
25. dependencies {
// Unit testing dependencies.
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
}
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
public class RobolectricUnitTest {
@Test
public void shouldHaveHappySmiles() throws Exception {
String hello = new MainActivity().getResources().getString(R.string.hello_world);
assertThat(hello, equalTo("Hello world!"));
}
}
26. @RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
public class ZodiacUnitTest {
private ListView listView;
private String[] zodiacSigns;
@Before
public void setUp() {
MainActivity mainActivity = Robolectric.buildActivity(MainActivity.class).create().get();
assertNotNull("Main Activity not setup", mainActivity);
listView=(ListView) mainActivity.findViewById(R.id.list_of_signs);
zodiacSigns = RuntimeEnvironment.application.getResources().getStringArray(R.array.zodiac_a
}
@Test
public void listLoaded() throws Exception {
assertThat("should be a dozen star signs", zodiacSigns.length, equalTo(listView.getCount())
}
}
32. @RunWith(MockitoJUnitRunner.class)
public class UserPreferencesTest {
// Use Mockito to initialize UserPreferences
public UserPreferences tUserPreferences = Mockito.mock(UserPreferences.class);
private Activity tActivity;
@Before
public void setUp() {
// Use Mockito to declare the return value of getSharedPreferences()
Mockito.when(tUserPreferences.getSharedPreferences(tActivity)).thenReturn("true");
}
@Test
public void sharedPreferencesTest_ReturnsTrue() {
// Test
Assert.assertThat(tUserPreferences.getSharedPreferences(tActivity), is("true"));
}
}
33. @RunWith(MockitoJUnitRunner.class)
public class DatabaseTest {
private User joeSmith = new User("Joe", "Smith");
private final int USER_ID = 1;
@Test
public void testMockUser() {
//mock SQLHelper
SQLHelper dbHelper = Mockito.mock(SQLHelper.class);
//have mockito return joeSmith when calling dbHelper getUser
Mockito.when(dbHelper.getUser(USER_ID)).thenReturn(joeSmith);
//Assert joeSmith is returned by getUser
Assert.assertEquals(dbHelper.getUser(USER_ID), joeSmith);
}
}
34. @RunWith(MockitoJUnitRunner.class)
public class AudioHelperTest {
private final int MAX_VOLUME = 100;
@Test
public void maximizeVolume_Maximizes_Volume() {
// Create an AudioManager object using Mockito
AudioManager audioManager = Mockito.mock(AudioManager.class);
// Inform Mockito what to return when audioManager.getStreamMaxVolume is called
Mockito.when(audioManager.getStreamMaxVolume(AudioManager.STREAM_RING)).thenReturn(MAX_VOL
new AudioHelper().maximizeVolume(audioManager);
// verify with Mockito that setStreamVolume to 100 was called.
Mockito.verify(audioManager).setStreamVolume(AudioManager.STREAM_RING, MAX_VOLUME, 0);
}
}
35. @RunWith(MockitoJUnitRunner.class)
public class TowerRetrieverTest {
private static final String SUCCESS_STRING = "success";
@Test
public void towerRetrievalTest()
{
// Use Mockito to initialize the WebService
TowerRetriever towerRetriever = Mockito.mock(TowerRetriever.class);
// Use Mockito to declare the return value as SUCCESS_STRING
Mockito.when(towerRetriever.send("0", "0", "0")).thenReturn(SUCCESS_STRING);
// Test
Assert.assertEquals(SUCCESS_STRING, towerRetriever.send("0", "0", "0"));
}
}
36. TEST DRIVEN DEVELOPMENT (TDD)TEST DRIVEN DEVELOPMENT (TDD)
Unit testing vs TDD
Why TDD
Sample app
Lessons learned
37. TEST DRIVEN DEVELOPMENTTEST DRIVEN DEVELOPMENT
Write test first
See it fail
Write simplest possible solution
to get test to pass
Refactor
Wash, Rinse, Repeat
38. TEST DRIVEN DEVELOPMENTTEST DRIVEN DEVELOPMENT
Built in regression testing
Longer life for your codebase
YAGNI feature development
Red/Green/Refactor helps
kill procrastination
39. TDDTDD
You can't TDD w/o unit testing
TDD means writing the tests
before the code
TDD is more painless than
classic unit testing
UNIT TESTINGUNIT TESTING
You can unit test w/o TDD
Unit tests don't mandate when
you write the tests
Unit tests are often written at
the end of a coding cycle
40. SAMPLE APP - DAILY HOROSCOPESAMPLE APP - DAILY HOROSCOPE
Display each star sign
Display information about each star sign
Display horoscope for star sign
43. public static final Zodiac[] signs = {
new Zodiac("Aries","Enterprising, Incisive, Spontaneous, Daring, Active, Courageous and Energetic, the Aries are the proverbial infants, guileless and op
new Zodiac("Taurus","Known for being reliable, practical, ambitious and sensual, the people born under the Zodiac Sign Taurus have an eye for beauty.", "
new Zodiac("Gemini","Gemini-born are clever and intellectual people but they can also be tense and restless.", "Twins", "June"),
new Zodiac("Cancer"," The otherwise tenacious, loyal, sympathetic and strong Crabs are vulnerable in many ways.", "Crab", "July"),
new Zodiac("Leo","Warm, action-oriented and driven by the desire to be loved and admired, the Leo have an air royalty about them.", "Lion", "August"),
new Zodiac("Virgo","Methodical, meticulous, analytical and mentally astute, the Virgo natives are perfectionists to the core, or at least, they like to b
new Zodiac("Libra","Librans are famous for maintaining balance and harmony.", "Scales", "October"),
new Zodiac("Scorpio","The Scorpio-born are strong willed and mysterious, and they know how to effortlessly grab the limelight, as they possess what it ta
new Zodiac("Sagittarius","Sagittarians are born adventurers. They tend to get bored with things easily and move on with life", "Archer", "December"),
new Zodiac("Capricorn","The Capricorn-born people are the most determined of the entire Zodiac.", "Goat", "January"),
new Zodiac("Aquarius","The Aquarius-born people are humanitarians to the core", "Water Bearer", "February"),
new Zodiac("Pisces","Pisces or the Fish is considered as the proverbial dreamers of the Zodiac.", "Fish", "March")
};
@Before
public void setUp() {
Intent intent = new Intent(RuntimeEnvironment.application, ZodiacDetailActivity.class);
intent.putExtra(ZodiacDetailActivity.EXTRA_SIGN, ARIES_SIGN_INDEX);
zodiacDetailActivity = Robolectric.buildActivity(ZodiacDetailActivity.class).withIntent(intent).create().get();
assertNotNull("Zodiac Detail Activity not setup", zodiacDetailActivity);
}
@Test
public void zodiacSymbolTest() throws Exception {
TextView symbolTextView = (TextView) zodiacDetailActivity.findViewById(R.id.symbol);
assertEquals(Zodiac.signs[ARIES_SIGN_INDEX].getSymbol(), symbolTextView.getText().toString());
}
public class ZodiacDetailActivity extends Activity {
public static final String EXTRA_SIGN = "ZodiacSign";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zodiac_detail);
int signNum = (Integer)getIntent().getExtras().get(EXTRA_SIGN);
Zodiac zodiac = Zodiac.signs[signNum];
TextView name = (TextView)findViewById(R.id.name);
name.setText(zodiac.getName());
TextView description = (TextView)findViewById(R.id.description);
description.setText(zodiac.getDescription());
TextView symbol = (TextView)findViewById(R.id.symbol);
symbol.setText(zodiac.getSymbol());
TextView month = (TextView)findViewById(R.id.month);
month.setText(zodiac.getMonth());
}
}
44. public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
String yourJsonStringUrl = "http://a.knrz.co/horoscope-api/current/";
String horoscope = "";
public AsyncTaskParseJson(Zodiac sign) {
yourJsonStringUrl += sign.getName().toLowerCase();
}
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate our json parser
JsonParser jParser = new JsonParser();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
horoscope = json.getString("prediction");
horoscope = URLDecoder.decode(horoscope);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
TextView display = (TextView) findViewById(R.id.daily);
display.setText(horoscope);
}
}
@Test
public void zodiacDailyTest() {
TextView dailyTextView = (TextView) zodiacDetailActivity.findViewById(R.id.daily);
assertEquals("This week try wearing less make-up when you leave the house, " +
"even if it means angering the other members of KISS.", dailyTextView.getText().toString());
}
45. LESSONS LEARNEDLESSONS LEARNED
What worked
No longer need emulator
Not so much
Android Activities don't work well with TDD
Robolectric is your friend
49. @RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> activityTestRule
= new ActivityTestRule<> (MainActivity.class);
@Test
public void helloWorldTest() {
onView(withId(R.id.hello_world))
.check(matches(withText(R.string.hello_world)));
}
}
@Test
public void helloWorldButtonTest(){
onView(withId(R.id.button))
.perform(click())
.check(matches(isEnabled()));
}
50. @RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> activityTestRule
= new ActivityTestRule<>(MainActivity.class);
@Test
public void toDoListTest(){
onData(anything())
.inAdapterView(withId(R.id.list_of_todos)).atPosition(4)
.perform(click());
onView(withId(R.id.txt_selected_item))
.check(matches(withText("go to the gym")));
}
}
52. STEPSSTEPS
Introduce Continuous Integration to build code
Configure android projects for TDD
Add minimal unit tests based on existing tests, add to CI
Show team how to create unit tests
Add testing code coverage metrics to CI, expect 5-10%
Add Espresso tests
Unit test new features or sprouts, mock existing objects
Wrap or ring fence existing code, remove unused code
Refactor wrapped code to get code coverage to 60-70%
53. package alexandria.israelferrer.com.libraryofalexandria;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.squareup.picasso.Picasso;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
public class MainActivity extends Activity {
private static final String PACKAGE = "com.israelferrer.alexandria";
private static final String KEY_FAVS = PACKAGE + ".FAVS";
private List<ArtWork> artWorkList;
private ArtWorkAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView);
InputStream stream = getResources().openRawResource(R.raw.artwork);
Type listType = new TypeToken<List<ArtWork>>() {
}.getType();
artWorkList = new Gson().fromJson(new InputStreamReader(stream), listType);
final SharedPreferences preferences = getSharedPreferences(getPackageName()
, Context.MODE_PRIVATE);
for (ArtWork artWork : artWorkList) {
artWork.setRating(preferences.getFloat(PACKAGE + artWork.getId(), 0F));
}
adapter = new ArtWorkAdapter();
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.filter) {
adapter.orderMode();
return true;
}
return super.onOptionsItemSelected(item);
}
private class ArtWorkAdapter extends BaseAdapter {
private boolean isOrder;
private final List<ArtWork> orderedList;
public ArtWorkAdapter() {
super();
orderedList = new LinkedList<ArtWork>();
}
@Override
public int getCount() {
return artWorkList.size();
}
@Override
public Object getItem(int position) {
return artWorkList.get(position);
}
@Override
public long getItemId(int position) {
return Long.valueOf(artWorkList.get(position).getId());
}
public void orderMode() {
isOrder = !isOrder;
if (isOrder) {
orderedList.clear();
orderedList.addAll(artWorkList);
Collections.sort(orderedList);
notifyDataSetChanged();
} else {
notifyDataSetChanged();
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ArtWork artWork;
if (isOrder) {
artWork = orderedList.get(position);
} else {
artWork = artWorkList.get(position);
}
View row;
switch (artWork.getType()) {
case ArtWork.QUOTE:
row = getLayoutInflater().inflate(R.layout.text_row, null);
TextView quote = (TextView) row.findViewById(R.id.quote);
TextView author = (TextView) row.findViewById(R.id.author);
quote.setText(""" + artWork.getText() + """);
author.setText(artWork.getAuthor());
break;
case ArtWork.PAINTING:
final SharedPreferences preferences = getSharedPreferences(getPackageName()
, Context.MODE_PRIVATE);
final HashSet<String> favs = (HashSet<String>) preferences
.getStringSet(KEY_FAVS,
new HashSet<String>());
row = getLayoutInflater().inflate(R.layout.painting_row, null);
ImageView image = (ImageView) row.findViewById(R.id.painting);
TextView painter = (TextView) row.findViewById(R.id.author);
painter.setText(artWork.getTitle() + " by " + artWork.getAuthor());
Picasso.with(MainActivity.this).load(artWork.getContentUrl()).fit()
.into(image);
RatingBar rating = (RatingBar) row.findViewById(R.id.rate);
rating.setRating(artWork.getRating());
rating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
preferences.edit().putFloat(PACKAGE + artWork.getId(), rating).apply();
artWork.setRating(rating);
}
});
CheckBox fav = (CheckBox) row.findViewById(R.id.fav);
fav.setChecked(favs.contains(artWork.getId()));
fav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final HashSet<String> favs = new HashSet<String>((HashSet<String>)
preferences
.getStringSet(KEY_FAVS,
new HashSet<String>()));
if (isChecked) {
favs.add(artWork.getId());
} else {
favs.remove(artWork.getId());
}
preferences.edit().putStringSet(KEY_FAVS,
favs).apply();
}
});
break;
case ArtWork.MOVIE:
case ArtWork.OPERA:
row = new ViewStub(MainActivity.this);
break;
default:
row = getLayoutInflater().inflate(R.layout.text_row, null);
}
return row;
}
}
}
56. LESSONS LEARNEDLESSONS LEARNED
Look at different architectures
MVP, MVVM w/data binding
What worked
Take baby steps, Metrics should evolve….
Not so much
Don’t be driven by metrics
Remember….
You don’t need anyone’s permission to start