This talk is about how my company took a broken e-commerce and LMS site written in an older style MVC framework and re-wrote a significant portion of it in Symfony and related tools (Doctrine, FOS Bundles, Sonata) over 6 months and created a stable, well-tested application.
Join me for a retrospective look at how my team rewrote the core of a legacy application over six months and launched a well tested, stable product. In this session you'll learn how to work with an existing codebase without creating your own "legacy" code, by applying practices and tools such as identifying and using third party libraries, version control and code review, code quality measurements, BDD/TDD, and Continuous Integration.
It's not the bugs you know that kill a website. It's the ones you can't see, lurking just out of sight, that get you. Learn how Lafayette College identified the Lovecraftian code horrors lurking beneath its feet with tools like Splunk (server log analysis), OSSEC (server-side bad behavior monitor) and SiteImprove (web page auditing tool) and then surgically eliminated the problems. Examples include PHP scripts spewing error notices into logs, undiscovered CAS authentication failures, and thumbnail generation scripts that choke on large files.
With this presentation you will learn all that you need about Codenarc, an static code analysis tool for Groovy programing language that allow you to check for coding standard and best practices.
Nitro for your Grails App: How to improve performance!! Greach' 18Alberto Barón Cuevas
Do you want to improve the performance of your Grails Applications? In this presentation you will find the mains topics you have to change into your grails application to be more efficient and faster. You will find some tricks about domain classes, async logging, parallelism, regex, querying and tools.
Lessons learned from doing it repeatedly
by Mirah Gary & Josh Hill, Pivotal
Pipelines are the infrastructure we use to test and deliver our code. We work with them every day, but sometimes they behave in unexpected ways. We will go over common failure modes and issues we have encountered in our Concourse pipelines, and understand what we can do to prevent and solve these pain points.
Being able to build pipelines that work for you is critical for effective dev/ops. By sharing our own mistakes, we hope that you will be able to recognize them when they happen and know what to do to fix the problems.
This talk was delivered at the Concourse London User Group (CLUG) on 6 December 2018 at Pivotal London: https://www.meetup.com/Concourse-London-User-Group/events/256171643/
On Open Day, we share our activities of the month with each other and the community. It's when we take a step back and see where we stand. Here's our Open Day for September 2018.
Join me for a retrospective look at how my team rewrote the core of a legacy application over six months and launched a well tested, stable product. In this session you'll learn how to work with an existing codebase without creating your own "legacy" code, by applying practices and tools such as identifying and using third party libraries, version control and code review, code quality measurements, BDD/TDD, and Continuous Integration.
It's not the bugs you know that kill a website. It's the ones you can't see, lurking just out of sight, that get you. Learn how Lafayette College identified the Lovecraftian code horrors lurking beneath its feet with tools like Splunk (server log analysis), OSSEC (server-side bad behavior monitor) and SiteImprove (web page auditing tool) and then surgically eliminated the problems. Examples include PHP scripts spewing error notices into logs, undiscovered CAS authentication failures, and thumbnail generation scripts that choke on large files.
With this presentation you will learn all that you need about Codenarc, an static code analysis tool for Groovy programing language that allow you to check for coding standard and best practices.
Nitro for your Grails App: How to improve performance!! Greach' 18Alberto Barón Cuevas
Do you want to improve the performance of your Grails Applications? In this presentation you will find the mains topics you have to change into your grails application to be more efficient and faster. You will find some tricks about domain classes, async logging, parallelism, regex, querying and tools.
Lessons learned from doing it repeatedly
by Mirah Gary & Josh Hill, Pivotal
Pipelines are the infrastructure we use to test and deliver our code. We work with them every day, but sometimes they behave in unexpected ways. We will go over common failure modes and issues we have encountered in our Concourse pipelines, and understand what we can do to prevent and solve these pain points.
Being able to build pipelines that work for you is critical for effective dev/ops. By sharing our own mistakes, we hope that you will be able to recognize them when they happen and know what to do to fix the problems.
This talk was delivered at the Concourse London User Group (CLUG) on 6 December 2018 at Pivotal London: https://www.meetup.com/Concourse-London-User-Group/events/256171643/
On Open Day, we share our activities of the month with each other and the community. It's when we take a step back and see where we stand. Here's our Open Day for September 2018.
Testing Your Code as Part of an Industrial Grade WorkflowPantheon
There are a lot of obvious benefits to using version control for your projects, but there are a lot of non obvious benefits too. In this SlideShare, learn how to create an industrial grade version control workflow using Git and automatic testing. Topics include:
- How to Use Git Branches: Instead of having all of the developers work on the same “master” branch, you can have developers work on separate branches that can be created per developer, per feature, or even per ticket in your project management system.
- How to Do Performance Testing: Instead of crossing your fingers when you site gets a lot of traffic, be sure that your site can handle the traffic by doing performance testing on each deployment that you do.
- How to Do Cross Browser Testing: Instead of firing up a bunch of Virtual Machines to test different browsers and devices, set up an automatic script so that every time you are looking to do a deploy you get a bunch of screenshots to review.
- How to Do Visual Regression Testing: If you are pushing a change that shouldn’t effect the front end of the site, wouldn’t it be nice to verify that? Learn how to visually compare a “before” and “after” version of your site to see where (if anywhere) visual changes happen.
- How to Notify You Of Deployments: Instead of wondering if code has been deployed, learn how to integrate your workflow with chat solutions like Hipchat/Slack or more traditional solutions like SMS or Email.
If you are a developer or manage developers on web projects, this session will help you learn how to level up your workflow and do a lot of really powerful testing on your project every time you do a commit.
Over the past few years, Gradle has become a popular build tool in the JVM space. This is not surprising, considering the power and the features it brings, compared with its competitors. However, one thing Gradle lacks is history and the collective knowledge at the same level of other alternatives: how does one organize a Gradle project in an ‘idiomatic’ fashion?
We feel that we’ve put together a decent build pipeline for each of our microservices over the years, and each one starts with their build.gradle file(s). We’d like to share it, although we’re not sure if it’s the ‘correct’ way.
In this talk, we’ll walk through a sample project structure and build process. We’ll discuss the various checks and tools we use (e.g. Sonar, CodeNarc, Jenkins) at each step of the build. We’ll explain how each of the components in the process work for us, and share samples of our Groovy scripts. Most importantly, though, we’d like to hear what the audience are using in their builds!
An introduction to Google's PRPL pattern that can be used to implement Progressive Web Applications. Delivered at MWLUG 2017 in Alexandria, VA by Keith Strickland.
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential.
This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).
In 2013, Facebook released a new JavaScript framework which would soon be adopted by loads of companies to build complex Front-End web applications. React is now mature, a great community quickly formed and produced by-products and extension like Redux or React Native. This workshop aims at showcasing the basics of React and discuss when choosing it the most relevant.
If you build web applications you now have a huge responsibility: everything must be tested and secured. But how do you test and secure legacy applications or how do you get started with a new project using test-driven techniques to maximise quality and security without investing too much time in it.
In this workshop we will start with a clean project and build a simple catalogue application using test-driven and security-hardened techniques to achieve our goal. Once we have achieved our goal, we're going to apply the same on a legacy application.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.c-sharpcorner.com/events/react-virtual-conference2
Why is Performance important?
Applications in general
Web applicaitons
What can we as devs do?
Tips: How to optimize
Web applications, Silverlight, Backend, …
Regression
How to maintain performance over time
How to get faster over time
Discussion: What tips do you have in your toolbox?
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by DefaultJSFestUA
Angular grew significantly in the past few years from both a tooling and developer experience standpoint. This talk will explore many of the features and newer improvements in the pipeline that allow anyone to build and deploy performant apps with very little overhead. Through real demos and examples, we’ll cover Ivy, bundle budgeting, differential serving, automatic code-splitting, and progressive rehydration of SSR elements. In the second part of the talk, we’ll focus on how to efficiently prefetch and preload different modules and components.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.meetup.com/nl-NL/tilburg-tech-tuesdays/events/277150883/
An overview of the Angular 1.x -> 2.x upgrade experience using Angular 2 Beta and ngUpgrade.
Talk given by Chris Nicola at the AngularJS Vancouver Meetup
Slides from my talk on how to Eradicate Flaky Tests from AppiumConf 2021
https://confengine.com/conferences/appium-conf-2021/proposal/15581/eradicate-flaky-tests
TestBrowser Driven Development: How to get bulletproof code from lazy developersDylan Jay
Introducing a new coding technique that helped PretaWeb deliver a large workflow system on time, on budget and most importantly, delivered what we expected to deliver.
This will cover
• unit and doctest in python,
• test driven development,
• usecase analysis,
• automated functional web testing,
• some practical examples using Grok and
• a brief look at documentation driven development.
Techniques covered are applicable to small and large web developments
Testing Your Code as Part of an Industrial Grade WorkflowPantheon
There are a lot of obvious benefits to using version control for your projects, but there are a lot of non obvious benefits too. In this SlideShare, learn how to create an industrial grade version control workflow using Git and automatic testing. Topics include:
- How to Use Git Branches: Instead of having all of the developers work on the same “master” branch, you can have developers work on separate branches that can be created per developer, per feature, or even per ticket in your project management system.
- How to Do Performance Testing: Instead of crossing your fingers when you site gets a lot of traffic, be sure that your site can handle the traffic by doing performance testing on each deployment that you do.
- How to Do Cross Browser Testing: Instead of firing up a bunch of Virtual Machines to test different browsers and devices, set up an automatic script so that every time you are looking to do a deploy you get a bunch of screenshots to review.
- How to Do Visual Regression Testing: If you are pushing a change that shouldn’t effect the front end of the site, wouldn’t it be nice to verify that? Learn how to visually compare a “before” and “after” version of your site to see where (if anywhere) visual changes happen.
- How to Notify You Of Deployments: Instead of wondering if code has been deployed, learn how to integrate your workflow with chat solutions like Hipchat/Slack or more traditional solutions like SMS or Email.
If you are a developer or manage developers on web projects, this session will help you learn how to level up your workflow and do a lot of really powerful testing on your project every time you do a commit.
Over the past few years, Gradle has become a popular build tool in the JVM space. This is not surprising, considering the power and the features it brings, compared with its competitors. However, one thing Gradle lacks is history and the collective knowledge at the same level of other alternatives: how does one organize a Gradle project in an ‘idiomatic’ fashion?
We feel that we’ve put together a decent build pipeline for each of our microservices over the years, and each one starts with their build.gradle file(s). We’d like to share it, although we’re not sure if it’s the ‘correct’ way.
In this talk, we’ll walk through a sample project structure and build process. We’ll discuss the various checks and tools we use (e.g. Sonar, CodeNarc, Jenkins) at each step of the build. We’ll explain how each of the components in the process work for us, and share samples of our Groovy scripts. Most importantly, though, we’d like to hear what the audience are using in their builds!
An introduction to Google's PRPL pattern that can be used to implement Progressive Web Applications. Delivered at MWLUG 2017 in Alexandria, VA by Keith Strickland.
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential.
This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).
In 2013, Facebook released a new JavaScript framework which would soon be adopted by loads of companies to build complex Front-End web applications. React is now mature, a great community quickly formed and produced by-products and extension like Redux or React Native. This workshop aims at showcasing the basics of React and discuss when choosing it the most relevant.
If you build web applications you now have a huge responsibility: everything must be tested and secured. But how do you test and secure legacy applications or how do you get started with a new project using test-driven techniques to maximise quality and security without investing too much time in it.
In this workshop we will start with a clean project and build a simple catalogue application using test-driven and security-hardened techniques to achieve our goal. Once we have achieved our goal, we're going to apply the same on a legacy application.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.c-sharpcorner.com/events/react-virtual-conference2
Why is Performance important?
Applications in general
Web applicaitons
What can we as devs do?
Tips: How to optimize
Web applications, Silverlight, Backend, …
Regression
How to maintain performance over time
How to get faster over time
Discussion: What tips do you have in your toolbox?
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by DefaultJSFestUA
Angular grew significantly in the past few years from both a tooling and developer experience standpoint. This talk will explore many of the features and newer improvements in the pipeline that allow anyone to build and deploy performant apps with very little overhead. Through real demos and examples, we’ll cover Ivy, bundle budgeting, differential serving, automatic code-splitting, and progressive rehydration of SSR elements. In the second part of the talk, we’ll focus on how to efficiently prefetch and preload different modules and components.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.meetup.com/nl-NL/tilburg-tech-tuesdays/events/277150883/
An overview of the Angular 1.x -> 2.x upgrade experience using Angular 2 Beta and ngUpgrade.
Talk given by Chris Nicola at the AngularJS Vancouver Meetup
Slides from my talk on how to Eradicate Flaky Tests from AppiumConf 2021
https://confengine.com/conferences/appium-conf-2021/proposal/15581/eradicate-flaky-tests
TestBrowser Driven Development: How to get bulletproof code from lazy developersDylan Jay
Introducing a new coding technique that helped PretaWeb deliver a large workflow system on time, on budget and most importantly, delivered what we expected to deliver.
This will cover
• unit and doctest in python,
• test driven development,
• usecase analysis,
• automated functional web testing,
• some practical examples using Grok and
• a brief look at documentation driven development.
Techniques covered are applicable to small and large web developments
Palestra no Minas Startup Week de 2015 sobre Sharing Economy, Airbnb, Uber, plataformas e outras tecnologias nesta nova era do compartilhamento, viagens de experiência e aluguel de temporada.
Compras Públicas - Parte I - IntroduçãoRafael Lisboa
Apresentação elaborada para aula de Compras Públicas no curso preparatório para o concurso de Analista de Políticas Públicas e Gestão Governamental da Prefeitura Municipal de São Paulo.
Of all social media platforms, Twitter can often be the most difficult one for businesses to master. Here's a beginner's guide to help get you started!
Based on chapter 1 of the textbook "Building Java Programs", 3rd edition. Covers binary/decimal number conversion, the programming process, writing your very first program, console output, and procedural decomposition.
See a video presentation of this slideshow on my YouTube channel JavaGoddess, at https://www.youtube.com/watch?v=yYLfN_potQY&t=57s
Fundamentals of Extending Magento 2 - php[world] 2015David Alger
Magento 2.0 GA was released this past Tuesday. This new major release of the well-known Magento eCommerce platform incorporates modern design practices, breathing new life into a steadily growing platform. Whether you’ve been working with Magento 1 for the last few years or are completely new to Magento, come and learn about the new and exciting aspects of Magento 2. You will be presented with an overview of the system architecture, shown some of the various ways to extend the system, and walk away ready to use Magento for your next eCommerce project.
Everyone talks about raising the bar on quality of code, but it's always hard to start implementing it when you have no clue where to start. With this talk I'm showing that there are many levels developers can improve themselves by using the right tools.
* Syntax checking with PHPLint (php -l)
* Validating code with PHP_CodeSniffer
* Testing code with PHPUnit
* Debugging code with XDebug
* Documenting code with PHPDocumentator
* Building with Phing
* Packaging with Phar
Why I like PHPStorm
Advantages of Using Docker
Client, Docker Host, Registry
Docker Usage
Solr Docker File
Every Day Docker Commands
Docker Search
One Line Scripts
Portainer
Kinematic
Docker Compose
Grafana
Coding style guide
PHPCS/MD
Documentation Rules
Xdebug
Postman
PHP CE 2018 - Building Symfony application with Ports and Adapters approach a...Dariusz Drobisz
Having code that is not coupled with any framework has a lot of profits. There is a small probability that you will be changing framework during your project lifecycle, but that kind of approach gives you easy way to reuse some of your functionalities across different styles of user interaction. GUI? API? Console command? Easy peasy with small effort. Everything with high understanding of domain you are working for.
Slides for workshop.
Doing Quality Assurance in PHP projects sometimes looks like a dark art! Picking the right tools, making all tools work together, analysing your code and even then deliver all the required features of the software project can be quite challenging.
This talks aims to help lowering the entry barrier for doing QA on your project, sharing the experience, knowledge and some tricks that brings QA back from the dark arts to the every day of a PHP programmer.
We will review tools like Jenkins, PHPUnit, phpcs, pdepend, phpcpd, etc and how we can chain them together to make sure we are building a great software.
Presentation done on February the 18th on the MVC pattern at the first event of PHPBelgium in Liège.
The idea was to transform a simple spaghetti application into a well structured, MVC-aware and framework-free application with nice URL just using regular PHP and Apache's configuration.
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Pantheon
Greg Anderson's slide deck from BADCamp 2016.
Having a fine-tuned continuous integration environment is extremely valuable, even for small projects. Today, there is a wide variety of standalone projects and online Software-As-A-Service offerings that can super-streamline your everyday development tasks that can help you get your projects up and running like a pro. In this session, we'll look at how you can get the most out of:
- GitHub source code repository
- Packagist package manager for Composer
- Travis CI continuous integration service
- Coveralls code coverage service
- Scrutinizer static analysis service
- Box2 phar builder
- PhpDocumentor api documentation generator
- ReadTheDocs online documentation reader service
- Composer scripts and projects for running local tests and builds
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
We'll go through the possible ways to bring technology agnostic microservice architecture to the frontend, review pros/cons of each of them. We also will check the "ultimate solution" that handles microservices with SSR in SPA manner.
This talk will be interesting for ones who have multiple teams working on the same frontend application.
Workshop: Refactoring Legacy PHP: The Complete Guide Junade Ali
PHPConf Asia 2018 Workshop by Junade Ali
It’s no secret that software is often written poorly. In commercial environments, developers will regularly find themselves facing technical debt and find that the ability to refactor code is an essential skill to master. As Martin Fowler famously wrote: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
Due to bad design in software, delivering value to the client can become ever more difficult and stressful until bad software design decisions are rectified. For developers working on badly designed projects, making repayments on technical debt, whilst also delivering value is a key skill – this session will explain how it is possible to square-the-circle and both deliver value whilst paying down technical debt.
Unfortunately far too many developers consider refactoring as a risky task filled with code that’s ridden with var_dumps and debug breakpoints. This session seeks to teach attendees that refactoring can be a safe, everyday task during normal software development and that it is indeed healthy to refactor software mercilessly, especially when operating in an Agile environment with changing software requirements.
This session will feature a hands-on demonstration of how to refactor a legacy app through a combination of automated testing, faster releases and merciless refactoring.
Practical experience in automated software testing and continuous integration are vital learning outcomes and this session seeks to expose attendees to tools like Docker, PHPUnit, Selenium and PHP Mess Detector. Beyond testing, we’ll cover the Code Smells that help developers weed out where the problematic code is.
Gaining a firm grounding in Object-Oriented Programming when refactoring PHP is invaluable and as such, this session will take a deep-dive into Polymorphism, SOLID principles and anti-patterns. After nailing down Object-Orientation, we’ll discuss how we can move legacy software architecture to suitable Design Patterns.
Extreme Programming practices will be presented as a key discussion point on how developers can help achieve these goals.
Effective Doctrine2: Performance Tips for Symfony2 DevelopersMarcin Chwedziak
How to boost performance Doctrine2 with Symfony2. How to configure metadata caching? How to optimize DQL queries for caching. How to properly setup transaction demarcation with EntityManager. How to deal with EntityManager and Listeners with Symfony2 container.
SOLID – a set of concepts for designing maintainable and understandable software – yet some of these ideas can be hard to understand themselves. Scholarly definitions and generic examples of these are often still confusing and not applicable to real world applications. By taking a look at an actual application, we’ll explore these principles in action, and demonstrate the benefits of following them.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow in detail with best practices for behavior testing, integration testing and unit testing.
SOLID - a set of concepts for designing maintainable and understandable software - yet some of these ideas can be hard to understand themselves. Scholarly definitions and generic examples of these are often still confusing and not applicable to real world applications. By taking a look at an actual application, we'll explore these principles in action, and demonstrate the benefits of following them.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
An in-depth look at intermediate to advanced level Behat topics. We'll cover writing better features, regular expressions in steps, Context files, changes from Behat 2 to 3, and more,
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
Rebuilding our Foundation
1. @jessicamauerhan | Madison PHP | https://joind.in/16022
Rebuilding Our Foundation
How We Used Symfony To
Rewrite Our Application
@jessicamauerhan | Madison PHP | https://joind.in/16022
2. @jessicamauerhan | Madison PHP | https://joind.in/16022
● Project History
● Problems and Goals
● Why Symfony?
● Rapid Development
of Quality Code
● Doctrine DBAL / ORM
Topics
● Automated Testing
● Sonata Admin Bundle
● Creating an API with
Symfony
● Dependency Injection
● Current Project
Status
2
3. @jessicamauerhan | Madison PHP | https://joind.in/16022
● Learning Management System
● Content Production
● E-Commerce
● Business to Business (B2B)
Application Summary
3
4. @jessicamauerhan | Madison PHP | https://joind.in/16022
Problematic History
● Broken Admin Panel
● No Documentation of Basic Processes
● Frontend Site Worked, Progress Stalled
● Complex Logic not Documented
4
5. @jessicamauerhan | Madison PHP | https://joind.in/16022
Business Goals
● Add Missing Admin Panel Functionality
● Add New Features Without Breaking Existing Features
● Avoid Downtime
5
6. @jessicamauerhan | Madison PHP | https://joind.in/16022
Technical Goals
● Maintainable Code
● Quality Code
● Documentation
● Rapid Development
● Easy Deployment
● Zero Regressions Per Release
6
7. @jessicamauerhan | Madison PHP | https://joind.in/16022
Why Symfony?
● Community
○ Third Party Code Integration
○ Blazing Trails
○ Popularity
○ Support
7
9. @jessicamauerhan | Madison PHP | https://joind.in/16022
Rapid Development of Quality Code
● Version Control: Git
● Development Workflow
9
10. @jessicamauerhan | Madison PHP | https://joind.in/16022
Image sourced from Atlassian: https://www.atlassian.com/git/tutorials/comparing-
workflows/gitflow-workflow
Licensed under the Creative Commons Attribution 2.5 Australia License.
10
11. @jessicamauerhan | Madison PHP | https://joind.in/16022
Rapid Development of Quality Code
● Version Control: Git
● Development Workflow: Gitflow
● Code Style Guide: PSR-2
11
12. @jessicamauerhan | Madison PHP | https://joind.in/16022
Rapid Development of Quality Code
● Version Control: Git
● Development Workflow: Gitflow
● Code Style Guide: PSR-2
● Code Quality Rules
12
28. @jessicamauerhan | Madison PHP | https://joind.in/16022
Writing Features for Existing Code
● Write Feature
● Run Test
○ Test Passes - Double Check
○ Test Fails
■ Described Feature Wrong
■ Mistake in Test Code
■ Feature is Broken
28
34. @jessicamauerhan | Madison PHP | https://joind.in/16022
Generate App Bundle
C:wampwwwtest>php appconsole generate:bundle
Welcome to the Symfony2 bundle generator
Your application code must be written in bundles. This command helps
you generate them easily.
Each bundle is hosted under a namespace (like Acme/Bundle/BlogBundle).
The namespace should begin with a "vendor" name like your company name, your
project name, or your client name, followed by one or more optional category
sub-namespaces, and it should end with the bundle name itself
(which must have Bundle as a suffix).
See http://symfony.com/doc/current/cookbook/bundles/best_practices.html#index-1
for more details on bundle naming conventions.
Use / instead of for the namespace delimiter to avoid any problem.
Bundle namespace: Demo/AppBundle
34
35. @jessicamauerhan | Madison PHP | https://joind.in/16022
Generate App Bundle
In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it's really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest DemoAppBundle.
Bundle name [DemoAppBundle]: AppBundle
35
36. @jessicamauerhan | Madison PHP | https://joind.in/16022
The bundle can be generated anywhere. The suggested default directory uses the
standard conventions.
Target directory [C:wampwwwtest/src]:
Determine the format to use for the generated configuration.
Configuration format (yml, xml, php, or annotation): annotation
To help you get started faster, the command can generate some code snippets for
you.
Do you want to generate the whole directory structure [no]? yes
Generate App Bundle
36
37. @jessicamauerhan | Madison PHP | https://joind.in/16022
Generate App Bundle
Summary before generation
You are going to generate a "DemoAppBundleAppBundle" bundle
in "C:wampwwwtest/src/" using the "annotation" format.
Do you confirm generation [yes]?
Bundle generation
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]?
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]?
Importing the bundle routing resource: OK
You can now start using the generated code!
37
42. @jessicamauerhan | Madison PHP | https://joind.in/16022
//AppKernel.php
public function registerBundles()
{
return [
//...
new SymfonyBundleSecurityBundleSecurityBundle(),
new SonataCoreBundleSonataCoreBundle(),
new SonataBlockBundleSonataBlockBundle(),
new KnpBundleMenuBundleKnpMenuBundle(),
new SonataDoctrineORMAdminBundleSonataDoctrineORMAdminBundle(),
new SonataAdminBundleSonataAdminBundle()
];
}
Enable Sonata Admin Bundle
42
46. @jessicamauerhan | Madison PHP | https://joind.in/16022
<?php
namespace DemoAppBundleAdmin;
use SonataAdminBundleAdminAdmin;
use SonataAdminBundleFormFormMapper;
use SonataAdminBundleDatagridListMapper;
use SonataAdminBundleDatagridDatagridMapper;
class CourseAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper){}
protected function configureListFields(ListMapper $listMapper){}
protected function configureDatagridFilters(DatagridMapper
$datagridMapper){}
}
Admin Class
46
47. @jessicamauerhan | Madison PHP | https://joind.in/16022
Admin Class - Create/Edit Form
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title', 'text', ['label' => 'Course Title'])
->add('author', 'entity', ['class' =>
'DemoAppBundleEntityUser'])
->add('description', null, ['required' => false])
->add('categories')
->add('cost');
}
47
48. @jessicamauerhan | Madison PHP | https://joind.in/16022
Admin Class - List
// Fields to be shown on lists
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('title')
->add('author')
->add('cost')
->add('categories');
}
48
49. @jessicamauerhan | Madison PHP | https://joind.in/16022
Admin Class - Datagrid Filters
// Fields to be shown on filter forms
protected function configureDatagridFilters(DatagridMapper
$datagridMapper)
{
$datagridMapper
->add('title')
->add('author')
->add('categories');
}
49
60. @jessicamauerhan | Madison PHP | https://joind.in/16022
Enable FOS Rest Bundle and Serializer Bundle
//AppKernel.php
public function registerBundles()
{
return [
// ...
new FOSRestBundleRestBundle(),
new JMSSerializerBundleJMSSerializerBundle(),
new NelmioApiDocBundleNelmioApiDocBundle()
];
}
60
62. @jessicamauerhan | Madison PHP | https://joind.in/16022
API Controller
<?php
namespace DemoAppBundleController;
use FOSRestBundleControllerFOSRestController;
use FOSRestBundleControllerAnnotationsGet;
class UsersController extends FOSRestController
{
/**
* @Get("/users/")
*/
public function getUsersAction()
{
$data = $this->getDoctrine()->getRepository('modelsUser')->findAll();
$view = $this->view($data, 200)
->setTemplate("AppBundle:Basic:json.twig")
->setTemplateVar('users');
return $this->handleView($view);
}
}
62
63. @jessicamauerhan | Madison PHP | https://joind.in/16022
JSON Twig Tpl
{% spaceless %}{% if json is defined %}
{{ json|json_encode()|raw }}
{% else %}
[]
{% endif %}{% endspaceless %}
63
64. @jessicamauerhan | Madison PHP | https://joind.in/16022
Add Doc Blocks with Annotation to
API Controller
<?php
namespace DemoAppBundleController;
use ...
class UsersController extends FOSRestController
{
/**
* @Get("/users/")
* @ApiDoc(
* resource=true,
* description="List of Users",
* output="modelsUser"
* )
*/
public function getUsersAction()
{
$data = $this->getDoctrine()->getRepository('modelsUser')->findAll();
$view = $this->view($data, 200)
->setTemplate("AppBundle:Basic:json.twig")
->setTemplateVar('users');
return $this->handleView($view);
}
}
64
65. @jessicamauerhan | Madison PHP | https://joind.in/16022
Dependency
Injection
Service
Location
Configure
Dependencies
Outside of Class
Class Requests
Dependencies
From Container
65
66. @jessicamauerhan | Madison PHP | https://joind.in/16022
Service Location
<?php
namespace DemoAppBundleCommand;
use SymfonyBundleFrameworkBundleCommandContainerAwareCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use DemoAppBundleFactoryMessageFactory;
class UserExportCommand extends ContainerAwareCommand
{
protected function execute(InputInterface $input, OutputInterface $output)
{
$rootDir = $this->getContainer()->getParameter('kernel.root_dir');
$users = $this->getContainer()->getDoctrine()
->getRepository('modelsUser')->findAll();
$messageFactory = new MessageFactory();
foreach ($users as $user) {
$emailMessage = $this->getMessageFactory()->generate($user);
/** More Processing Logic Here */
}
}
}
66
70. @jessicamauerhan | Madison PHP | https://joind.in/16022
Dependency Injection
<?php
namespace DemoAppBundleCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use DemoAppBundleFactoryMessageFactory;
use SymfonyComponentConsoleCommandCommand;
class UserExportCommand extends Command
{
protected $messageFactory;
protected $rootDir;
protected $userRepository;
}
70
71. @jessicamauerhan | Madison PHP | https://joind.in/16022
Dependency Injection
<?php
//..
class UserExportCommand extends Command
{
//..
public function setMessageFactory($messageFactory)
{
$this->messageFactory = $messageFactory;
}
public function setRootDir($rootDir)
{
$this->rootDir = $rootDir;
}
public function setUserRepository($userRepository)
{
$this->userRepository = $userRepository;
}
71
72. @jessicamauerhan | Madison PHP | https://joind.in/16022
Dependency Injection
<?php
//..
class UserExportCommand extends Command
{
//..
public function getMessageFactory()
{
return $this->messageFactory;
}
public function getRootDir()
{
return $this->rootDir;
}
public function getUserRepository()
{
return $this->userRepository;
}
72
73. @jessicamauerhan | Madison PHP | https://joind.in/16022
Dependency Injection
73
<?php
//..
class UserExportCommand extends Command
{
//..
protected function execute(InputInterface $input, OutputInterface $output)
{
$users = $this->getUserRepository()->findAll();
/** Processing Logic */
foreach ($users as $user) {
$emailMessage = $this->getMessageFactory()->generate($user);
/** More Processing Logic Here */
}
}
}
74. @jessicamauerhan | Madison PHP | https://joind.in/16022
Controller Using Service Location
74
<?php
namespace DemoAppBundleController;
use FOSRestBundleControllerFOSRestController;
use FOSRestBundleControllerAnnotationsGet;
class UsersController extends FOSRestController
{
/**
* @Get("/users/")
*/
public function getUsersAction()
{
$data = $this->getDoctrine()->getRepository('modelsUser')->findAll();
$view = $this->view($data, 200)
->setTemplate("AppBundle:Basic:json.twig")
->setTemplateVar('users');
return $this->handleView($view);
}
}
75. @jessicamauerhan | Madison PHP | https://joind.in/16022
services:
appbundle.controllers.users_controller:
class: DemoAppBundleControllerUsersController
calls:
- [ setUserRepository, ["@appbundle.repositories.user"]]
Defining A Controller As A Service
75
76. @jessicamauerhan | Madison PHP | https://joind.in/16022
Controller using Dependency Injection
76
/**
* @Route(service="appbundle.controllers.users_controller")
*/
class UsersController extends FOSRestController
{
protected $userRepository;
public function setUserRepository($userRepository)
{
$this->userRepository = $userRepository;
}
/**
* @Get("/users/")
*/
public function getUsersAction()
{
$data = $this->userRepository->findAll();
$view = $this->view($data, 200)
->setTemplate("AppBundle:Basic:json.twig")
->setTemplateVar('users');
return $this->handleView($view);
}
}
77. @jessicamauerhan | Madison PHP | https://joind.in/16022
Current Project
Status
It's stable!
● New Symfony based Admin
was launched after about 9
months (thanks developers!)
● Had a few bugs, took about 3
more months to be stable
● Over past year, close to 0
regressions (Thanks Behat!)
● Very limited downtime
(Thanks Amazon, Elastic
Beanstalk, Aurora!)
77
78. @jessicamauerhan | Madison PHP | https://joind.in/16022
Technical Goals
Happy Developers!
● Maintainable Code: Check
● Quality Code: Check
● Documentation: Check
● Rapid Development: Oh Yeah
● Easy Deployment: So Easy!
● Zero Regressions: Close
Enough!
78
79. @jessicamauerhan | Madison PHP | https://joind.in/16022
Rebuilding Our Foundation
How We Used Symfony To
Rewrite Our Application
@jessicamauerhan | Madison PHP | https://joind.in/16022