En muchos proyectos en los que participamos, nos vemos habitualmente forzados a sacrificar nuestro compromiso con la calidad y la mantenibilidad del producto que estamos construyendo en favor del cumplimiento de plazos y/o resultados. Esto, de manera sostenida, tiene un gran impacto en la velocidad de entrega de los equipos. La falta de tests unitarios o una batería de tests unitarios mal planteada provoca que el refactor de código se vaya volviendo progresivamente más difícil y más costoso.
¿Disfrutas cuando haces un refactor de tu producto? Nunca es tarde para intentar convencer a tu negocio y poner en marcha algunas buenas prácticas que te ayudarán a reducir el código legacy transformándolo en código más mantenible.
En esta charla compartiré algunos conceptos y técnicas que nos ayudarán en esta tarea, como branch by abstraction, sprout o wrap. Hablaremos también del mayor enemigo: las dependencias. Describiré con ejemplos los que deben ser nuestros mejores aliados: los tests de caracterización y las “costuras”. Y repasaré algunas técnicas básicas de refactorización que nos ayudarán en todo este proceso como extract interface o subclass & override.
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...Priyanka Aash
Machine learning algorithms are key to modern at-scale cyberdefense. Transfer learning is a state of the art ML paradigm that enables applying knowledge and algorithms developed from one field to another, resulting in innovative solutions. This talk presents transfer learning in action wherein techniques created from other areas are successfully re-purposed and applied to cybersecurity.
(Source: RSA Conference USA 2018)
Mutation testing is a technique that measures the quality of a test suite. This is done by making small changes (mutations) to our code, which will break our application, and ensuring that there is at least one test that no longer passes.
This talk introduces the concept of mutation testing.We show that by using mutation testing we can find bugs in code which has a 100% code coverage. We will look at a few open source projects and use the padraic/humbug package to analyze their Mutation Score Indicator. Lastly we look at some of the disadvantages of mutation testing, namely performance and false positives.
The document introduces Test Driven Development (TDD), Continuous Integration (CI), Inversion of Control (IoC), and Aspect Oriented Programming (AOP). It discusses TDD principles and tools for writing tests first before code. CI aims to integrate code changes frequently to prevent integration problems. IoC and dependency injection improve software design by reducing coupling between components. AOP allows cross-cutting concerns like logging to be coded separately from the main program logic.
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
Code: https://github.com/calebjenkins/Acme.CodingNaked
Presenting at events: https://developingux.com/tag/coding-naked/
This document discusses refactoring code to improve its structure and design without changing its external behavior. Refactoring involves applying small, incremental changes through techniques like extracting methods, replacing conditionals, and parameterizing methods. It improves code quality by making it more readable, reusable, maintainable and less error-prone. The key is to refactor in small steps through practices like testing and code reviews to pay off technical debt over time.
maXbox Starter 43 Work with Code Metrics ISO StandardMax Kleiner
Today we step through optimize your code with metrics and some style guide conventions. You cannot improve what you don’t measure and what you don’t measure, you cannot prove. A tool can be great for code quality but also provides a mechanism for extending your functions and quality with checks and tests.
Talk in Switzerland at European Broadcasting Union cyber security event - Feb 2017.
Discussing some core aspects of secure application development, technical security controls and secure systems development lifecycle....
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
16 грудня 2021 року відбувся GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Personal Skill”! Анатолій Сахно (Software Testing Consultant, GlobalLogic) розібрав принципи TDD (розробки, керованої тестами) та приклади їх застосування. Крім того, поговорили про:
- Ефективне використання модульних тестів у повсякденних задачах;
- Використання TDD при розробці тестових фреймворків;
- Застосування принципів TDD при написанні функціональних автотестів.
Більше про захід: https://www.globallogic.com/ua/about/events/globallogic-test-automation-online-techtalk-test-driven-development-as-a-personal-skill/
Приємного перегляду і не забудьте залишити коментар про враження від TechTalk!
Ця активність — частина заходів в рамках GlobalLogic Test Automation Advent Calendar, ще більше заходів та цікавинок за посиланням: https://bit.ly/AdventCalendar_fb
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...Priyanka Aash
Machine learning algorithms are key to modern at-scale cyberdefense. Transfer learning is a state of the art ML paradigm that enables applying knowledge and algorithms developed from one field to another, resulting in innovative solutions. This talk presents transfer learning in action wherein techniques created from other areas are successfully re-purposed and applied to cybersecurity.
(Source: RSA Conference USA 2018)
Mutation testing is a technique that measures the quality of a test suite. This is done by making small changes (mutations) to our code, which will break our application, and ensuring that there is at least one test that no longer passes.
This talk introduces the concept of mutation testing.We show that by using mutation testing we can find bugs in code which has a 100% code coverage. We will look at a few open source projects and use the padraic/humbug package to analyze their Mutation Score Indicator. Lastly we look at some of the disadvantages of mutation testing, namely performance and false positives.
The document introduces Test Driven Development (TDD), Continuous Integration (CI), Inversion of Control (IoC), and Aspect Oriented Programming (AOP). It discusses TDD principles and tools for writing tests first before code. CI aims to integrate code changes frequently to prevent integration problems. IoC and dependency injection improve software design by reducing coupling between components. AOP allows cross-cutting concerns like logging to be coded separately from the main program logic.
Coding Naked – Practical steps to moving towards & embracing TDD. We'll overview the normal roadblocks that people typically run in to, and practical ways to overcome those road blocks on your way to embracing Test Driven Development - make coding without tests as uncomfortable as coding naked!
Code: https://github.com/calebjenkins/Acme.CodingNaked
Presenting at events: https://developingux.com/tag/coding-naked/
This document discusses refactoring code to improve its structure and design without changing its external behavior. Refactoring involves applying small, incremental changes through techniques like extracting methods, replacing conditionals, and parameterizing methods. It improves code quality by making it more readable, reusable, maintainable and less error-prone. The key is to refactor in small steps through practices like testing and code reviews to pay off technical debt over time.
maXbox Starter 43 Work with Code Metrics ISO StandardMax Kleiner
Today we step through optimize your code with metrics and some style guide conventions. You cannot improve what you don’t measure and what you don’t measure, you cannot prove. A tool can be great for code quality but also provides a mechanism for extending your functions and quality with checks and tests.
Talk in Switzerland at European Broadcasting Union cyber security event - Feb 2017.
Discussing some core aspects of secure application development, technical security controls and secure systems development lifecycle....
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
16 грудня 2021 року відбувся GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Personal Skill”! Анатолій Сахно (Software Testing Consultant, GlobalLogic) розібрав принципи TDD (розробки, керованої тестами) та приклади їх застосування. Крім того, поговорили про:
- Ефективне використання модульних тестів у повсякденних задачах;
- Використання TDD при розробці тестових фреймворків;
- Застосування принципів TDD при написанні функціональних автотестів.
Більше про захід: https://www.globallogic.com/ua/about/events/globallogic-test-automation-online-techtalk-test-driven-development-as-a-personal-skill/
Приємного перегляду і не забудьте залишити коментар про враження від TechTalk!
Ця активність — частина заходів в рамках GlobalLogic Test Automation Advent Calendar, ще більше заходів та цікавинок за посиланням: https://bit.ly/AdventCalendar_fb
How to write clean & testable code without losing your mindAndreas Czakaj
If you create software that is to be developed continuously over several years you'll need a sustainable approach to code quality.
In our early days of AEM development, however, we used to struggle with code that is rigid, hard to test and full of LOG.debug calls.
In this talk I will share some development best practices we have found that really work in actual AEM based software, e.g. to achieve 100% code coverage and provide high confidence in the code base.
Spoiler alert: no new libraries, frameworks or tools are required - once you know the ideas, plain old TDD and the S.O.L.I.D. principles of Clean Code will do the trick.
by Andreas Czakaj, mensemedia Gesellschaft für Neue Medien mbH
Presented at the adaptTo() 2017 conference in Berlin (https://adapt.to/2017/en/schedule/how-to-write-clean---testable-code-without-losing-your-mind.html).
Presentation video can be found on YouTube (https://www.youtube.com/watch?v=JbJw5oN_zL4)
Test-Driven Development in React with CypressJosh Justice
As your React app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Low latency microservices in java QCon New York 2016Peter Lawrey
In this talk we explore how Microservices and Trading System overlap and what they can learn from each other. In particular, how can we make microservices easy to test and performant. How can Trading System have shorter time to market and easier to maintain.
Most developers have the responsibility of working with an existing codebase that is not testable. In this session, you will learn several techniques to refactoring non testable code. In addition, unit tests will be added and executed as a part of an automated test suite. The associated code/project is here: https://github.com/rightincode/RefactoringToTestableCode
Software construction is an exercise in managing complexity, more so with the spiralling complexity required by modern games. Automated Testing is an industry proven methodology to deliver more reliable complex software, with a fighting chance to do it on time and on budget. And having fun doing so. Crytek is spearheading this idea in the game industry with its flagship title, and now sharing the experience with you: best practices, potential pitfalls, To-Do’s and No-No’s will be shown with real examples of unit testing game code using its proprietary testing framework and tools. Functional Testing and acceptance testing will also be touched on as a viable way of describing and checking game design requirements. And take automated testing to the next level.
The document discusses improving code quality through effective code review processes. It outlines common coding mistakes like redundant code, long or deeply nested functions, large modules, poor comments, and hardcoding. It recommends following best practices like coding guidelines, centralized server communication, and the single responsibility principle. The document also discusses measuring and reducing code complexity, avoiding memory leaks, optimizing images, static code analysis, and profiling to improve code quality.
TDD involves first writing an automated test that fails, then writing just enough code to pass that test, and refactoring the code. The red-green-refactor process ensures code is tested and well-designed. Studies found TDD reduced pre-release defects by 40-90% and increased initial development time by 15-35%, but allowed for faster development long-term by eliminating bugs early. The document demonstrates TDD with a temperature converter in Xcode, starting with failing tests for -40C=-40F and 30C=86F then coding to pass them.
Unit testing in Apex has several benefits:
1. It forces developers to define requirements, which testing then validates.
2. Unit tests provide free regression testing and target compatibility testing.
3. Well-written unit tests can achieve code coverage requirements with less effort.
The document summarizes application security best practices. It discusses who is responsible for application security and design considerations like authentication, authorization, privacy and data integrity. It then covers security principles like designing for security by default and in deployment. Top application vulnerabilities like SQL injection, cross-site scripting and access control issues are explained along with remedies. Finally, it provides checklists for designers, developers and testers to follow for application security.
This document discusses principles of clean code and software craftsmanship. It covers topics such as what constitutes clean code through examples of good and bad code. Other sections provide guidance on naming conventions, functions, comments, formatting, error handling, unit testing, and class design. The document emphasizes that code should be written to be readable, reusable, and maintainable.
It happens that we have to develop several services and deploy them in Azure. They are small, repetitive but different, often not very different. Why not use code generation techniques to simplify the development and implementation of these services? Let's see with .NET comes to meet us and helps us to deploy in Azure.
Many programmers are dedicated and even obsessed with writing “good” code. We believe the most important feature of good code is its usability for developers.Good code is readable, concise, and easy to navigate. In this talk we will discuss why good code is valuable, and how to write better code.
The document discusses refactoring as a process of improving code quality without changing external behavior. It is not about adding features or fixing bugs, but improving code structure and design to make it easier to maintain and change. Refactoring aims to improve code readability, efficiency, and flexibility by techniques like simplifying conditionals, extracting methods, and reducing dependencies between code elements. The impact of changes must be minimized by refactoring private elements before public ones. Tests are crucial to ensure refactoring does not introduce errors. Code is refactored when it shows signs of deterioration like duplication, overcomplexity, or tight coupling between modules.
Data flow analysis is a type of static code analysis that examines how values are propagated through a program. It is more effective than pattern matching or regular static analysis at finding defects related to interactions between methods and classes that may be difficult to uncover through testing alone. Static analysis tools using data flow analysis can simulate execution paths to detect potential issues without requiring the code to be compiled and run. Developers are encouraged to use static testing tools to catch defects early in development, as prevention of bugs is more efficient than finding and fixing them later.
The document summarizes strategies for combating software entropy through principles of software design such as the single responsibility principle, open/closed principle, and dependency inversion principle. It provides examples of how to refactor code to adhere to these principles, make the software more extensible and resilient to changes. Metrics for software design like afferent/efferent couplings and instability are also discussed to measure how well code adheres to these design best practices.
The document summarizes techniques for combating software entropy through principles of software design such as the single responsibility principle, open/closed principle, and dependency inversion principle. It provides examples of how to refactor code to follow these principles by separating concerns and abstracting dependencies. Following these principles helps make software easier to change, extend, and maintain over time.
The document discusses code quality and its importance. It defines code quality as code that works functionally, is testable, and is easy to maintain. It identifies good practices such as writing testable code, avoiding complexity, and following principles like DRY. Tools like test frameworks, code coverage tools, static analysis tools, and integrated tools like Sonar can help ensure code quality and catch issues early.
Automotive Cybersecurity: Test Like a HackerForAllSecure
Learn the techniques used by award-winning hacking teams (as well as in some real-world attacks) to identify and exploit vulnerabilities in OEM components and other automotive software. This presentation covers fundamental principles, as well as how to easily incorporate these techniques into unit or functional test stages - bringing an extra layer of protection to connected automobiles. We'll cover both how to best fit this type of testing into your pipeline to maximize speed and coverage, as well as discuss how to fit this offensive cyber security approach alongside your existing vulnerability scanning programs. Whether you're a vehicle manufacturer, integrator, or OEM - we'll discuss how to leverage hacking-based security techniques to improve protection across the supply chain and keep vehicles and drivers safer. What we'll cover:
- Successful exploits of components and vehicles - what these attacks had in common
- Layering offensive techniques atop existing security programs - what to do and what to avoid
- How to test integrated systems with multiple components from different OEMs working in tandem
- Integrating offensive testing into different stages in software development and component integration
Originally presented at https://www.automotive-iq.com/events-automotive-cybersecurity
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
“Customer experience is the next big battle ground for telcos,” proclaimed recently Amit Akhelikar, Global Director of Lynx Analytics at TM Forum Live! Asia in Singapore. But, how to fight in this battle? A common approach has been to keep “under control” some well-known network quality indicators, like dropped calls, radio access congestion, availability, and so on; but this has proven not to be enough to keep customers happy, like a siege weapon is not enough to conquer a city. But, what if it were possible to know how customers perceive services, at least most demanded ones, like web browsing or video streaming? That would be like a squad of archers ready to battle. And even having that, how to extract value of it and take actions in no time, giving our skilled archers the right targets? Meet CANVAS (Customer And Network Visualization and AnaltyticS), one of the first LATAM implementations of a Flink-based stream processing use case for a telco, which successfully combines leading and innovative technologies like Apache Hadoop, YARN, Kafka, Nifi, Druid and advanced visualizations with Flink core features like non-trivial stateful stream processing (joins, windows and aggregations on event time) and CEP capabilities for alarm generation, delivering a next-generation tool for SOC (Service Operation Center) teams.
Comparative analysis between traditional aquaponics and reconstructed aquapon...bijceesjournal
The aquaponic system of planting is a method that does not require soil usage. It is a method that only needs water, fish, lava rocks (a substitute for soil), and plants. Aquaponic systems are sustainable and environmentally friendly. Its use not only helps to plant in small spaces but also helps reduce artificial chemical use and minimizes excess water use, as aquaponics consumes 90% less water than soil-based gardening. The study applied a descriptive and experimental design to assess and compare conventional and reconstructed aquaponic methods for reproducing tomatoes. The researchers created an observation checklist to determine the significant factors of the study. The study aims to determine the significant difference between traditional aquaponics and reconstructed aquaponics systems propagating tomatoes in terms of height, weight, girth, and number of fruits. The reconstructed aquaponics system’s higher growth yield results in a much more nourished crop than the traditional aquaponics system. It is superior in its number of fruits, height, weight, and girth measurement. Moreover, the reconstructed aquaponics system is proven to eliminate all the hindrances present in the traditional aquaponics system, which are overcrowding of fish, algae growth, pest problems, contaminated water, and dead fish.
How to write clean & testable code without losing your mindAndreas Czakaj
If you create software that is to be developed continuously over several years you'll need a sustainable approach to code quality.
In our early days of AEM development, however, we used to struggle with code that is rigid, hard to test and full of LOG.debug calls.
In this talk I will share some development best practices we have found that really work in actual AEM based software, e.g. to achieve 100% code coverage and provide high confidence in the code base.
Spoiler alert: no new libraries, frameworks or tools are required - once you know the ideas, plain old TDD and the S.O.L.I.D. principles of Clean Code will do the trick.
by Andreas Czakaj, mensemedia Gesellschaft für Neue Medien mbH
Presented at the adaptTo() 2017 conference in Berlin (https://adapt.to/2017/en/schedule/how-to-write-clean---testable-code-without-losing-your-mind.html).
Presentation video can be found on YouTube (https://www.youtube.com/watch?v=JbJw5oN_zL4)
Test-Driven Development in React with CypressJosh Justice
As your React app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Low latency microservices in java QCon New York 2016Peter Lawrey
In this talk we explore how Microservices and Trading System overlap and what they can learn from each other. In particular, how can we make microservices easy to test and performant. How can Trading System have shorter time to market and easier to maintain.
Most developers have the responsibility of working with an existing codebase that is not testable. In this session, you will learn several techniques to refactoring non testable code. In addition, unit tests will be added and executed as a part of an automated test suite. The associated code/project is here: https://github.com/rightincode/RefactoringToTestableCode
Software construction is an exercise in managing complexity, more so with the spiralling complexity required by modern games. Automated Testing is an industry proven methodology to deliver more reliable complex software, with a fighting chance to do it on time and on budget. And having fun doing so. Crytek is spearheading this idea in the game industry with its flagship title, and now sharing the experience with you: best practices, potential pitfalls, To-Do’s and No-No’s will be shown with real examples of unit testing game code using its proprietary testing framework and tools. Functional Testing and acceptance testing will also be touched on as a viable way of describing and checking game design requirements. And take automated testing to the next level.
The document discusses improving code quality through effective code review processes. It outlines common coding mistakes like redundant code, long or deeply nested functions, large modules, poor comments, and hardcoding. It recommends following best practices like coding guidelines, centralized server communication, and the single responsibility principle. The document also discusses measuring and reducing code complexity, avoiding memory leaks, optimizing images, static code analysis, and profiling to improve code quality.
TDD involves first writing an automated test that fails, then writing just enough code to pass that test, and refactoring the code. The red-green-refactor process ensures code is tested and well-designed. Studies found TDD reduced pre-release defects by 40-90% and increased initial development time by 15-35%, but allowed for faster development long-term by eliminating bugs early. The document demonstrates TDD with a temperature converter in Xcode, starting with failing tests for -40C=-40F and 30C=86F then coding to pass them.
Unit testing in Apex has several benefits:
1. It forces developers to define requirements, which testing then validates.
2. Unit tests provide free regression testing and target compatibility testing.
3. Well-written unit tests can achieve code coverage requirements with less effort.
The document summarizes application security best practices. It discusses who is responsible for application security and design considerations like authentication, authorization, privacy and data integrity. It then covers security principles like designing for security by default and in deployment. Top application vulnerabilities like SQL injection, cross-site scripting and access control issues are explained along with remedies. Finally, it provides checklists for designers, developers and testers to follow for application security.
This document discusses principles of clean code and software craftsmanship. It covers topics such as what constitutes clean code through examples of good and bad code. Other sections provide guidance on naming conventions, functions, comments, formatting, error handling, unit testing, and class design. The document emphasizes that code should be written to be readable, reusable, and maintainable.
It happens that we have to develop several services and deploy them in Azure. They are small, repetitive but different, often not very different. Why not use code generation techniques to simplify the development and implementation of these services? Let's see with .NET comes to meet us and helps us to deploy in Azure.
Many programmers are dedicated and even obsessed with writing “good” code. We believe the most important feature of good code is its usability for developers.Good code is readable, concise, and easy to navigate. In this talk we will discuss why good code is valuable, and how to write better code.
The document discusses refactoring as a process of improving code quality without changing external behavior. It is not about adding features or fixing bugs, but improving code structure and design to make it easier to maintain and change. Refactoring aims to improve code readability, efficiency, and flexibility by techniques like simplifying conditionals, extracting methods, and reducing dependencies between code elements. The impact of changes must be minimized by refactoring private elements before public ones. Tests are crucial to ensure refactoring does not introduce errors. Code is refactored when it shows signs of deterioration like duplication, overcomplexity, or tight coupling between modules.
Data flow analysis is a type of static code analysis that examines how values are propagated through a program. It is more effective than pattern matching or regular static analysis at finding defects related to interactions between methods and classes that may be difficult to uncover through testing alone. Static analysis tools using data flow analysis can simulate execution paths to detect potential issues without requiring the code to be compiled and run. Developers are encouraged to use static testing tools to catch defects early in development, as prevention of bugs is more efficient than finding and fixing them later.
The document summarizes strategies for combating software entropy through principles of software design such as the single responsibility principle, open/closed principle, and dependency inversion principle. It provides examples of how to refactor code to adhere to these principles, make the software more extensible and resilient to changes. Metrics for software design like afferent/efferent couplings and instability are also discussed to measure how well code adheres to these design best practices.
The document summarizes techniques for combating software entropy through principles of software design such as the single responsibility principle, open/closed principle, and dependency inversion principle. It provides examples of how to refactor code to follow these principles by separating concerns and abstracting dependencies. Following these principles helps make software easier to change, extend, and maintain over time.
The document discusses code quality and its importance. It defines code quality as code that works functionally, is testable, and is easy to maintain. It identifies good practices such as writing testable code, avoiding complexity, and following principles like DRY. Tools like test frameworks, code coverage tools, static analysis tools, and integrated tools like Sonar can help ensure code quality and catch issues early.
Automotive Cybersecurity: Test Like a HackerForAllSecure
Learn the techniques used by award-winning hacking teams (as well as in some real-world attacks) to identify and exploit vulnerabilities in OEM components and other automotive software. This presentation covers fundamental principles, as well as how to easily incorporate these techniques into unit or functional test stages - bringing an extra layer of protection to connected automobiles. We'll cover both how to best fit this type of testing into your pipeline to maximize speed and coverage, as well as discuss how to fit this offensive cyber security approach alongside your existing vulnerability scanning programs. Whether you're a vehicle manufacturer, integrator, or OEM - we'll discuss how to leverage hacking-based security techniques to improve protection across the supply chain and keep vehicles and drivers safer. What we'll cover:
- Successful exploits of components and vehicles - what these attacks had in common
- Layering offensive techniques atop existing security programs - what to do and what to avoid
- How to test integrated systems with multiple components from different OEMs working in tandem
- Integrating offensive testing into different stages in software development and component integration
Originally presented at https://www.automotive-iq.com/events-automotive-cybersecurity
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
“Customer experience is the next big battle ground for telcos,” proclaimed recently Amit Akhelikar, Global Director of Lynx Analytics at TM Forum Live! Asia in Singapore. But, how to fight in this battle? A common approach has been to keep “under control” some well-known network quality indicators, like dropped calls, radio access congestion, availability, and so on; but this has proven not to be enough to keep customers happy, like a siege weapon is not enough to conquer a city. But, what if it were possible to know how customers perceive services, at least most demanded ones, like web browsing or video streaming? That would be like a squad of archers ready to battle. And even having that, how to extract value of it and take actions in no time, giving our skilled archers the right targets? Meet CANVAS (Customer And Network Visualization and AnaltyticS), one of the first LATAM implementations of a Flink-based stream processing use case for a telco, which successfully combines leading and innovative technologies like Apache Hadoop, YARN, Kafka, Nifi, Druid and advanced visualizations with Flink core features like non-trivial stateful stream processing (joins, windows and aggregations on event time) and CEP capabilities for alarm generation, delivering a next-generation tool for SOC (Service Operation Center) teams.
Similar to How deal with legacy code and not die trying v1.7 (20)
Comparative analysis between traditional aquaponics and reconstructed aquapon...bijceesjournal
The aquaponic system of planting is a method that does not require soil usage. It is a method that only needs water, fish, lava rocks (a substitute for soil), and plants. Aquaponic systems are sustainable and environmentally friendly. Its use not only helps to plant in small spaces but also helps reduce artificial chemical use and minimizes excess water use, as aquaponics consumes 90% less water than soil-based gardening. The study applied a descriptive and experimental design to assess and compare conventional and reconstructed aquaponic methods for reproducing tomatoes. The researchers created an observation checklist to determine the significant factors of the study. The study aims to determine the significant difference between traditional aquaponics and reconstructed aquaponics systems propagating tomatoes in terms of height, weight, girth, and number of fruits. The reconstructed aquaponics system’s higher growth yield results in a much more nourished crop than the traditional aquaponics system. It is superior in its number of fruits, height, weight, and girth measurement. Moreover, the reconstructed aquaponics system is proven to eliminate all the hindrances present in the traditional aquaponics system, which are overcrowding of fish, algae growth, pest problems, contaminated water, and dead fish.
DEEP LEARNING FOR SMART GRID INTRUSION DETECTION: A HYBRID CNN-LSTM-BASED MODELgerogepatton
As digital technology becomes more deeply embedded in power systems, protecting the communication
networks of Smart Grids (SG) has emerged as a critical concern. Distributed Network Protocol 3 (DNP3)
represents a multi-tiered application layer protocol extensively utilized in Supervisory Control and Data
Acquisition (SCADA)-based smart grids to facilitate real-time data gathering and control functionalities.
Robust Intrusion Detection Systems (IDS) are necessary for early threat detection and mitigation because
of the interconnection of these networks, which makes them vulnerable to a variety of cyberattacks. To
solve this issue, this paper develops a hybrid Deep Learning (DL) model specifically designed for intrusion
detection in smart grids. The proposed approach is a combination of the Convolutional Neural Network
(CNN) and the Long-Short-Term Memory algorithms (LSTM). We employed a recent intrusion detection
dataset (DNP3), which focuses on unauthorized commands and Denial of Service (DoS) cyberattacks, to
train and test our model. The results of our experiments show that our CNN-LSTM method is much better
at finding smart grid intrusions than other deep learning algorithms used for classification. In addition,
our proposed approach improves accuracy, precision, recall, and F1 score, achieving a high detection
accuracy rate of 99.50%.
The CBC machine is a common diagnostic tool used by doctors to measure a patient's red blood cell count, white blood cell count and platelet count. The machine uses a small sample of the patient's blood, which is then placed into special tubes and analyzed. The results of the analysis are then displayed on a screen for the doctor to review. The CBC machine is an important tool for diagnosing various conditions, such as anemia, infection and leukemia. It can also help to monitor a patient's response to treatment.
Use PyCharm for remote debugging of WSL on a Windo cf5c162d672e4e58b4dde5d797...shadow0702a
This document serves as a comprehensive step-by-step guide on how to effectively use PyCharm for remote debugging of the Windows Subsystem for Linux (WSL) on a local Windows machine. It meticulously outlines several critical steps in the process, starting with the crucial task of enabling permissions, followed by the installation and configuration of WSL.
The guide then proceeds to explain how to set up the SSH service within the WSL environment, an integral part of the process. Alongside this, it also provides detailed instructions on how to modify the inbound rules of the Windows firewall to facilitate the process, ensuring that there are no connectivity issues that could potentially hinder the debugging process.
The document further emphasizes on the importance of checking the connection between the Windows and WSL environments, providing instructions on how to ensure that the connection is optimal and ready for remote debugging.
It also offers an in-depth guide on how to configure the WSL interpreter and files within the PyCharm environment. This is essential for ensuring that the debugging process is set up correctly and that the program can be run effectively within the WSL terminal.
Additionally, the document provides guidance on how to set up breakpoints for debugging, a fundamental aspect of the debugging process which allows the developer to stop the execution of their code at certain points and inspect their program at those stages.
Finally, the document concludes by providing a link to a reference blog. This blog offers additional information and guidance on configuring the remote Python interpreter in PyCharm, providing the reader with a well-rounded understanding of the process.
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesChristina Lin
Traditionally, dealing with real-time data pipelines has involved significant overhead, even for straightforward tasks like data transformation or masking. However, in this talk, we’ll venture into the dynamic realm of WebAssembly (WASM) and discover how it can revolutionize the creation of stateless streaming pipelines within a Kafka (Redpanda) broker. These pipelines are adept at managing low-latency, high-data-volume scenarios.
Batteries -Introduction – Types of Batteries – discharging and charging of battery - characteristics of battery –battery rating- various tests on battery- – Primary battery: silver button cell- Secondary battery :Ni-Cd battery-modern battery: lithium ion battery-maintenance of batteries-choices of batteries for electric vehicle applications.
Fuel Cells: Introduction- importance and classification of fuel cells - description, principle, components, applications of fuel cells: H2-O2 fuel cell, alkaline fuel cell, molten carbonate fuel cell and direct methanol fuel cells.
7. ~77% #bugs
found in production
can be detected using
unit tests
(*) Simple Testing Can Prevent Most Critical Failures: https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
27. Flaky tests
By
Google
(*) Source: Google’s testing blog https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html
28. ~77% #bugs
found in production
can be detected using
unit tests
(*) Simple Testing Can Prevent Most Critical Failures: https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
58. public class RiskEngineTests {
@Test
public void transactionRiskLevelIsMediumForTransactionsWithMinAmount()
{
RiskEngine riskEngine = new RiskEngine();
Transaction t = new TransactionBuilder().withAmount(RiskEngine.MIN_AMOUNT).build();
TransactionRiskLevel level = riskEngine. getRiskLevelByAmmount(Transaction (t);
assertEquals(level, TransactionRiskLevel.MEDIUM);
}
}
64. public class RiskEngineTests {
@Test
public void transactionRiskLevelIsMediumForTransactionsWithMinAmount()
{
AmountRiskEngine riskEngine = new AmountRiskEngine();
Transaction t = new TransactionBuilder().withAmount(AmountRiskEngine.MIN_AMOUNT).build();
TransactionRiskLevel level = riskEngine.validate(t);
assertEquals(level, TransactionRiskLevel.MEDIUM);
}
}
65. For new code
Sprouts
Wraps
For old code
Surgical &
incremental
refactor