The document discusses Java programming, including an overview of Java development kit (JDK) versions, new features introduced over time, tools for Java development, frameworks, architectures, cloud native applications, testing, and resources for learning Java. It provides information on JDK 17, Java features from 8 to 17 like lambda expressions and pattern matching, IDEs, build tools like Maven and Gradle, web frameworks like Spring, reactive programming libraries, cloud native design, and types of testing in Java.
The document discusses reactive programming with Spring, including why reactive systems are needed, key concepts of reactive programming, and Spring's reactive frameworks. It notes that reactive systems aim to be responsive, resilient, and elastic. Spring supports reactive programming through projects like WebFlux, which uses reactive types like Mono and Flux. The document provides an overview of reactive concepts and demonstrates a simple reactive REST application using Spring WebFlux.
The document discusses testing strategies for Spring Boot applications. It covers different types of tests like unit tests, integration tests, and end-to-end tests. It recommends having a testing pyramid with more unit and integration tests than end-to-end tests. Specific Spring Boot testing annotations are also introduced, such as @SpringBootTest, @WebMvcTest, and @DataJpaTest, that can be used to test different parts of an application in isolation. Mocking frameworks like Mockito are also discussed for unit testing services and repositories. The document emphasizes automating tests for fast feedback and continuous integration.
This document discusses microservices and their implementation using Spring Boot and Spring Cloud frameworks. It begins with an overview of microservices characteristics and architecture, challenges in developing microservices applications, and patterns for observability. The document then focuses on how Spring Boot and Spring Cloud can be used to build microservices, covering features like configuration management, service registration and discovery, routing, fault tolerance, load balancing, and distributed tracing. Examples of creating a new Spring Boot project and setting up common Spring Cloud components like Config Server, Eureka, Zuul and Hystrix are also provided.
The document discusses lessons learned from building mobile applications with React Native and Flutter. It covers topics like building cross-platform apps with JavaScript or Dart, state management options, designing reusable components, setting up continuous integration/delivery pipelines, and addressing performance and security issues. The goal is to help mobile developers optimize their workflows and application architectures.
The document introduces DevOps concepts including why DevOps is needed, its principles and goals. It discusses that DevOps aims to reduce the time between code changes and production deployment while ensuring quality. DevOps promotes a culture of collaboration between development and operations teams through practices like automation, continuous integration/delivery, and sharing of knowledge. It also covers DevOps maturity levels, team topologies and categories of tools that can support DevOps workflows.
The document discusses various techniques for improving Angular application performance, including using trackBy in ngFor directives to avoid re-rendering the entire list when items change, building production versions of apps with optimizations like AOT compilation and minification, and debugging performance issues with source maps and tools like Sentry. Hardcoding values is discouraged in favor of more sustainable approaches. Testing code changes is also recommended.
This document discusses distributed tracing in Go applications. It explains what distributed tracing is and why it is useful for tracking requests across multiple services. It then provides an overview of common tracing tools and standards like OpenTracing and Jaeger that can be used to implement distributed tracing. Finally, it demonstrates distributed tracing in action with a demo of OpenTracing and Jaeger.
The document discusses different approaches to data management in microservices architectures, including sharing a single database, having a separate database for each service, and an event-driven approach using event sourcing and sagas. Event sourcing involves storing an immutable sequence of events and using those events to update read models. It allows for decoupling of query and command services but adds complexity and data duplication. The key is understanding the problem and purpose before choosing an approach.
The document outlines the agenda for the RobotFramework Meetup #2. The meetup aimed to update attendees on recent changes to RobotFramework, including new features in version 3.1 alpha 2 like support for Python wheels and an RPA mode. The meetup also discussed backward incompatible changes, contribution guidelines, and demonstrated tools and libraries for RobotFramework automation.
The document discusses visual testing and user interface (UI) testing. It notes some common issues with UI testing, including that it can be slow, brittle, and automation may not be too helpful. It then introduces Appraise as a visual testing tool that uses Google Chrome Headless and the Puppeteer Node API to run tests. It provides instructions for installing, running, and approving tests with Appraise.
The document discusses tips and lessons learned from WordCamp BKK 2018. It addresses choosing the right plugins for a website, managing source code, revising content, backing up the site, using strong security practices like unique usernames and strong passwords, keeping WordPress updated, and continuing to learn about web development.
The document discusses implementing agile practices in real world software development. It covers agile principles like iterative development, continuous learning, and delivering business value. It notes that while agile principles are simple, implementing them fully requires addressing challenges such as lack of management support, fixed schedules and budgets, and lack of developer training. The document advocates adopting an agile mindset of continuous improvement and delivering value over following practices strictly.
The document discusses principles of writing clean code, including keeping code simple with fewer lines, using descriptive names, adding comments to explain complex code, and regularly refactoring code for readability and maintainability. It encourages developers to periodically review their code to identify areas for improvement and clean up. The document appears to be from a presentation on clean code best practices.
This document appears to be a presentation on Cloud Firestore and its features. It introduces Cloud Firestore as a new document database for app developers, discusses key features like documents/collections, querying, offline access, and integration with other Firebase services. It also provides examples of adding, reading and deleting data from Cloud Firestore databases and collections.
This document discusses using Git as a NoSQL database to store and retrieve data. It shows how to initialize a Git repository, add JSON documents as files, commit the changes, and then retrieve the data by filename or hash. The document demonstrates basic CRUD operations for storing key-value pairs using Git, and notes that Git can provide features commonly found in NoSQL databases like speed, transactions, concurrency, backup, and replication capabilities.
The document discusses Java programming, including an overview of Java development kit (JDK) versions, new features introduced over time, tools for Java development, frameworks, architectures, cloud native applications, testing, and resources for learning Java. It provides information on JDK 17, Java features from 8 to 17 like lambda expressions and pattern matching, IDEs, build tools like Maven and Gradle, web frameworks like Spring, reactive programming libraries, cloud native design, and types of testing in Java.
The document discusses reactive programming with Spring, including why reactive systems are needed, key concepts of reactive programming, and Spring's reactive frameworks. It notes that reactive systems aim to be responsive, resilient, and elastic. Spring supports reactive programming through projects like WebFlux, which uses reactive types like Mono and Flux. The document provides an overview of reactive concepts and demonstrates a simple reactive REST application using Spring WebFlux.
The document discusses testing strategies for Spring Boot applications. It covers different types of tests like unit tests, integration tests, and end-to-end tests. It recommends having a testing pyramid with more unit and integration tests than end-to-end tests. Specific Spring Boot testing annotations are also introduced, such as @SpringBootTest, @WebMvcTest, and @DataJpaTest, that can be used to test different parts of an application in isolation. Mocking frameworks like Mockito are also discussed for unit testing services and repositories. The document emphasizes automating tests for fast feedback and continuous integration.
This document discusses microservices and their implementation using Spring Boot and Spring Cloud frameworks. It begins with an overview of microservices characteristics and architecture, challenges in developing microservices applications, and patterns for observability. The document then focuses on how Spring Boot and Spring Cloud can be used to build microservices, covering features like configuration management, service registration and discovery, routing, fault tolerance, load balancing, and distributed tracing. Examples of creating a new Spring Boot project and setting up common Spring Cloud components like Config Server, Eureka, Zuul and Hystrix are also provided.
The document discusses lessons learned from building mobile applications with React Native and Flutter. It covers topics like building cross-platform apps with JavaScript or Dart, state management options, designing reusable components, setting up continuous integration/delivery pipelines, and addressing performance and security issues. The goal is to help mobile developers optimize their workflows and application architectures.
The document introduces DevOps concepts including why DevOps is needed, its principles and goals. It discusses that DevOps aims to reduce the time between code changes and production deployment while ensuring quality. DevOps promotes a culture of collaboration between development and operations teams through practices like automation, continuous integration/delivery, and sharing of knowledge. It also covers DevOps maturity levels, team topologies and categories of tools that can support DevOps workflows.
The document discusses various techniques for improving Angular application performance, including using trackBy in ngFor directives to avoid re-rendering the entire list when items change, building production versions of apps with optimizations like AOT compilation and minification, and debugging performance issues with source maps and tools like Sentry. Hardcoding values is discouraged in favor of more sustainable approaches. Testing code changes is also recommended.
This document discusses distributed tracing in Go applications. It explains what distributed tracing is and why it is useful for tracking requests across multiple services. It then provides an overview of common tracing tools and standards like OpenTracing and Jaeger that can be used to implement distributed tracing. Finally, it demonstrates distributed tracing in action with a demo of OpenTracing and Jaeger.
The document discusses different approaches to data management in microservices architectures, including sharing a single database, having a separate database for each service, and an event-driven approach using event sourcing and sagas. Event sourcing involves storing an immutable sequence of events and using those events to update read models. It allows for decoupling of query and command services but adds complexity and data duplication. The key is understanding the problem and purpose before choosing an approach.
The document outlines the agenda for the RobotFramework Meetup #2. The meetup aimed to update attendees on recent changes to RobotFramework, including new features in version 3.1 alpha 2 like support for Python wheels and an RPA mode. The meetup also discussed backward incompatible changes, contribution guidelines, and demonstrated tools and libraries for RobotFramework automation.
The document discusses visual testing and user interface (UI) testing. It notes some common issues with UI testing, including that it can be slow, brittle, and automation may not be too helpful. It then introduces Appraise as a visual testing tool that uses Google Chrome Headless and the Puppeteer Node API to run tests. It provides instructions for installing, running, and approving tests with Appraise.
The document discusses tips and lessons learned from WordCamp BKK 2018. It addresses choosing the right plugins for a website, managing source code, revising content, backing up the site, using strong security practices like unique usernames and strong passwords, keeping WordPress updated, and continuing to learn about web development.
The document discusses implementing agile practices in real world software development. It covers agile principles like iterative development, continuous learning, and delivering business value. It notes that while agile principles are simple, implementing them fully requires addressing challenges such as lack of management support, fixed schedules and budgets, and lack of developer training. The document advocates adopting an agile mindset of continuous improvement and delivering value over following practices strictly.
The document discusses principles of writing clean code, including keeping code simple with fewer lines, using descriptive names, adding comments to explain complex code, and regularly refactoring code for readability and maintainability. It encourages developers to periodically review their code to identify areas for improvement and clean up. The document appears to be from a presentation on clean code best practices.
This document appears to be a presentation on Cloud Firestore and its features. It introduces Cloud Firestore as a new document database for app developers, discusses key features like documents/collections, querying, offline access, and integration with other Firebase services. It also provides examples of adding, reading and deleting data from Cloud Firestore databases and collections.
This document discusses using Git as a NoSQL database to store and retrieve data. It shows how to initialize a Git repository, add JSON documents as files, commit the changes, and then retrieve the data by filename or hash. The document demonstrates basic CRUD operations for storing key-value pairs using Git, and notes that Git can provide features commonly found in NoSQL databases like speed, transactions, concurrency, backup, and replication capabilities.