The document discusses best practices for developing Joomla extensions. It covers topics such as using version control with Git, following coding standards, using the MVC pattern with clear separation of controller, model and view code, and leveraging the Joomla framework with classes for databases, users, sessions and more. It also provides examples of code for controllers, models and views that follow these best practices.
Describe how to contribute to open source projects.
Provide example process using two hot open source project, linux and AOSP(Android Open Source Project)
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Contents:
* The Basics of FOF
* Programming a back-end component using FOF
Note: It *is* possible to attend this session without attending Part 2: Front-end After this session you should have an idea what FOF is and how to create your own back-end component using FOF.
(Live) build and run golang web server on android.aviSeongJae Park
Presented from gdg devfair 2014 and gdg korea golang seoul meetup 2015.
Added explanation about go 1.4 official android support a little from gdg korea golang seoul meetup presentation.
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Contents:
* Programming a simple front-end component using FOF
* Demo with programming, github & local web environment
Describe how to contribute to open source projects.
Provide example process using two hot open source project, linux and AOSP(Android Open Source Project)
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Contents:
* The Basics of FOF
* Programming a back-end component using FOF
Note: It *is* possible to attend this session without attending Part 2: Front-end After this session you should have an idea what FOF is and how to create your own back-end component using FOF.
(Live) build and run golang web server on android.aviSeongJae Park
Presented from gdg devfair 2014 and gdg korea golang seoul meetup 2015.
Added explanation about go 1.4 official android support a little from gdg korea golang seoul meetup presentation.
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Contents:
* Programming a simple front-end component using FOF
* Demo with programming, github & local web environment
PHP for Android: prototyping Android apps in phpCesare D'Amico
PFA (PHP for Android) is a project that lets you write native Android apps in php. In this talk you'll learn how to install and use this project to develop on your phone with php.
IPC 2013 - High Performance PHP with HipHopSteve Kamerman
A look at Facebook's HipHop for PHP library, both the first generation, HPHPc, and the new HHVM. This presentation walks through the challenges that faced Facebook and their PHP-based solution from a year after their explosive growth in 2007 to late-2013.
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Android is going to Go! Android and GolangAlmog Baku
I recently talked in Droidcon about building using Go with Android
We talked about what is Go? And why it's so awesome? And how can we use it with Android?
On this session we've learnt a little bit about Go, and how can we use it with Android- about the use cases, and the secret
tricks to use it with mobile applications.
Debugging Effectively - Frederick Web Tech 9/6/16Colin O'Dell
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
“en el futuro todas las empresas se convertirán en un negocio basado en el software con el método DevOps con un rol fundamental siempre y cuando la seguridad esté integrada”. CEO de Microsoft, Satya Nadella,.
Lessons Learned From Five of Marketing's Top Minds - starring Robert Rose, An...Workfront
Marketing is a Learning Experience
Great marketing has always been about trial and error and knowing when things are working and when they’re not. This has never been truer than it is now.
Now long ago, the most prominent voices in marketing were fresh out of school, just starting their careers, and making their own share of mistakes. Between then and now, what experiences turned them into the thought leaders they are today?
We asked five of these thought leaders to share with us their most transformative job experiences and what they learned. We hope you enjoy what they shared with us.
As always, fellow marketers, keep experimenting, keep learning, and keep improving!
- Joe Staples, CMO, Workfront
Integrating React.js Into a PHP ApplicationAndrew Rota
React.js has taken the web development world by storm, and for good reason: React offers a declarative, component-oriented approach to building highly-scalable web UIs. But how can we take advantage of a JavaScript library like React in our server-side PHP applications. In this talk l cover the different ways React.js can be integrated into an existing PHP web application: from a client-side only approach to multiple techniques that support full server-side rendering with a Node.js server or PHP’s v8js. I also discuss the trade-offs in each of these designs and the challenges involved with adding React to a PHP site. Most importantly, I consider the higher-level issue of how to improve view cohesion across the client-server divide in a PHP application.
PHP for Android: prototyping Android apps in phpCesare D'Amico
PFA (PHP for Android) is a project that lets you write native Android apps in php. In this talk you'll learn how to install and use this project to develop on your phone with php.
IPC 2013 - High Performance PHP with HipHopSteve Kamerman
A look at Facebook's HipHop for PHP library, both the first generation, HPHPc, and the new HHVM. This presentation walks through the challenges that faced Facebook and their PHP-based solution from a year after their explosive growth in 2007 to late-2013.
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014Peter Martin
One of the new feature since Joomla 3.2 is Rapid Application Development (RAD) framework.
A Joomla component is a PHP/MySQL web application that uses Joomla's framework. You can build your components on Joomla's framework and Joomla will take care of the database connection, the design (using templates), access levels, forms (JForms), etc. Using Joomla's framework saves you a lot of work and development time. However, it can be even faster!
Most Joomla components include the same functionality: In the front-end a list of records from the database hyperlinked to pages with details of each record individually. In the back-end the component list records from the database, with a link to a form where you can change the data and save.
Using the Rapid Application Development Framework (also known as FOF (Framework On Framework)) allows you to develop a component with common functionality with far fewer lines of code.
In this presentation, Peter shows how you can use Joomla's RAD to build a simple Joomla component to manage locations and categories and present those on the front-end to visitors on a Google Map.
Android is going to Go! Android and GolangAlmog Baku
I recently talked in Droidcon about building using Go with Android
We talked about what is Go? And why it's so awesome? And how can we use it with Android?
On this session we've learnt a little bit about Go, and how can we use it with Android- about the use cases, and the secret
tricks to use it with mobile applications.
Debugging Effectively - Frederick Web Tech 9/6/16Colin O'Dell
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
“en el futuro todas las empresas se convertirán en un negocio basado en el software con el método DevOps con un rol fundamental siempre y cuando la seguridad esté integrada”. CEO de Microsoft, Satya Nadella,.
Lessons Learned From Five of Marketing's Top Minds - starring Robert Rose, An...Workfront
Marketing is a Learning Experience
Great marketing has always been about trial and error and knowing when things are working and when they’re not. This has never been truer than it is now.
Now long ago, the most prominent voices in marketing were fresh out of school, just starting their careers, and making their own share of mistakes. Between then and now, what experiences turned them into the thought leaders they are today?
We asked five of these thought leaders to share with us their most transformative job experiences and what they learned. We hope you enjoy what they shared with us.
As always, fellow marketers, keep experimenting, keep learning, and keep improving!
- Joe Staples, CMO, Workfront
Integrating React.js Into a PHP ApplicationAndrew Rota
React.js has taken the web development world by storm, and for good reason: React offers a declarative, component-oriented approach to building highly-scalable web UIs. But how can we take advantage of a JavaScript library like React in our server-side PHP applications. In this talk l cover the different ways React.js can be integrated into an existing PHP web application: from a client-side only approach to multiple techniques that support full server-side rendering with a Node.js server or PHP’s v8js. I also discuss the trade-offs in each of these designs and the challenges involved with adding React to a PHP site. Most importantly, I consider the higher-level issue of how to improve view cohesion across the client-server divide in a PHP application.
Chapter 0: Fluxtrol Introduction to Induction Heating Technology and Magnetic...Fluxtrol Inc.
http://fluxtrol.com
Fluxtrol Inc. is pleased to offer you the following series of the Basics of Induction Heating presented here by Dr. Valentin Vemkov (2006)
The Be-All, End-All List of Small Business Tax DeductionsWagepoint
Read the full article with even more details at https://blog.wagepoint.com/h/i/289427271-the-comprehensive-list-of-small-business-tax-deductions/185037
Beyond Cigarettes: The Risks of Non-Cigarette Nicotine Products and Implicati...Center on Addiction
Whereas much is known about the effects of tobacco use, the current state of knowledge regarding non-cigarette nicotine products, such as electronic nicotine delivery systems (e-cigarettes and other vaping devices), water pipe/hookah, smokeless tobacco, pipes, cigars, little cigars, and cigarillos, that do not contain tobacco is not robust enough to yield a definitive consensus regarding their relative risks and benefits.
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
JUG Utrecht 2013 - Have you tried turning it off and on again? Problemen oplo...Peter Martin
Witte schermen, deprecated errors, missing Class errors, kan niet inloggen, kan niet installeren, mijn website is langzaam, mijn website is gehacked...
We hebben allemaal wel eens dergelijke problemen.
Deze presentatie werd op ma 9 december 2013 gegeven bij Joomla User Group Utrecht en leert je:
* identificeren van een probleem
* identificeren van het achterliggende probleem
* het probleem op te lossen
* of hulp te krijgen door de juiste vragen te stellen
En tijdens het probleem oplossen, leer je tevens iets over Joomla's Debug modus, .htaccess, phpMyAdmin, XAMPP, Akeeba Backup, Admin Tools, Google Chrome Inspect Element, FireFox Firebug, diff...
PHP was added to the languages offered by Google App Engine about a year ago. This session will focus on porting an existing app on gae.
We’ll start talking about the main characteristics of the app engine platform, which kind of services are available (persistence, storage, queue and so on) and how to use it. Then the PHP installation of app engine will be discussed, highlighting implementation choices and limitations. The second part of the talk will go into implementation details, in particular about tweaks needed to run an existing app on gae e.g: how a session is managed, logging is performed and how to interact with the file system not forgetting about deploy.
This presentation shall address the web2py web framework, my favorite way to develop web apps.
web2py is a free, open-source web framework for agile development of secure database-driven web applications; it is written in Python and programmable in Python. web2py is a full-stack framework, meaning that it contains all the components you need to build fully functional web applications.
Ease of use is the primary goal for web2py. For us, this means reducing the learning and deployment time. This is why web2py is a full-stack framework without dependencies. It requires no installation and has no configuration files. Everything works out of the box, including a web server, database and a web-based IDE that gives access to all the main features.
I will show you why web2py can make you more productive by bringing the result of a reflection over the best ideas of the most popular MVC based web frameworks enforcing the best practices for a fast, scalable and secure web application with minimal effort. There will be a live demo where you can get a faster grasp on how does it work and how fun it can be.
For more: www.web2py.com
Introduction to Magento 2 module development - PHP Antwerp Meetup 2017Joke Puts
This presentation was given at a PHP Antwerp Meetup: https://www.meetup.com/phpantwerp/events/237632633/
Magento 2 is a commerce platform released since November 2015. In this introduction I’ll focus on the open source version, Magento Community and show you how easy it is to start creating modules for this platform. These modules can be used to customize your store or to publish on the Magento Marketplace.
The following is my Agenda
* Why I don’t choose Jenkins or GitLab CI?
* What is Drone CI?
* Drone Infrastructure
* How to install Drone in five minutes?
* Integrate your project
* Create your Drone plugin
* Try drone CLI without drone server
more detail information you can find that in Udemy: https://www.udemy.com/devops-oneday/?couponCode=DRONE-DEVOPS
Behat internals for advanced usage. Symfony Camp 2016Sergey Polischook
Part 1. Common understanding Behat and BDD
Part 2. Internal implementations of Behat Core and Behat Extensions
Part 3. Current implementation of Behat in OroCRM
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
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.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
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
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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.
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.
2. About me
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Francesco
Abeni
sPrintAddCSSPizzaBox
3. About this speech
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
The quality of code in the Joomlasphere
4. No dev course
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
5. Our target
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Good = not bad
Excellent = above the average
Good is enough for today
6. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
7. IDE basic features
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● multiple files edit
● syntax highlighting
● index for methods and variables
● autocompletion
● compiler
● versioning / unit testing / phpdoc / ...
11. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
12. Everything in its right place
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Backend ● administrator
○ components
■ com_componentname
● componentname.php
● controllers
● models
● views
13. Everything in its right place
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Backend ● administrator
○ components
■ com_componentname
● ...
● tables
● sql
● helpers
14. ● media
○ com_componentname
■ css
■ js
■ img
● components
○ com_componentname
■ componentname.php
■ controllers
■ models
■ views
Everything in its right place
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Frontend
● images
○ com_componentname
15. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
17. CSS out of the door
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Don't:
<br style="clear: both">
<div style="height: 200px">
18. JS out of the door
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<button id="submit" type=submit" value="ClickMe!" onclick="validateForm()" />
Do:
<button id="submit" type=submit" value="ClickMe!"/>
document.addEvent('load',function(){
$('submit').addEvent('click',function(){
validateForm();
});
});
Don't:
19. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
21. PHP functions and classes
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● pcre
● trim
● usort
● array_map
● json_encode
● json_decode
● microtime(true)
● glob
● DateTime
● Standard PHP Library
● Exception
● SimpleXML
● TCPDF
● PHPMailer
22. PHP version
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● 16. Dec 2010: PHP 5.2 end of life
● 11. Jul 2013: PHP 5.3 end of life
● 01. Mar 2012: PHP 5.4 released
● 20 Jun 2013: PHP 5.5 released
● PHP 5.4 is 40% faster than PHP 5.2
23. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
24. Real objects
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
book writer library
25. Bad design sample
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● views/search
● views/editbook
● views/book
● views/books
● views/booksauthor
● views/topten
Don't:
26. The controller
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● Filters input
● Decides what to do
● Checks access
● Executes task(s)
● Passes control to the view
27. The model
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● Retrieves object data
● Validates object data
● Gets object data
● Saves object data
● Hates to be mistaken as an helper
28. The view
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● Ask the model for data
● Display object(s)
● Uses layouts!
29. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
30. Header comment
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
/**
* @version mybooks.php 2013-08-10 15:23:00Z zanardi
* @package GiBi MyBooks
* @author GiBiLogic
* @authorUrl http://www.gibilogic.com
* @authorEmail info@gibilogic.com
* @copyright Copyright (C) 2013 GiBiLogic. All rights reserved.
* @license GNU/GPL v2 or later
* @description Backend entry point
*/
31. Entry point
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
defined('_JEXEC') or die();
jimport('joomla.application.component.controller');
$view = JFactory::getApplication()->input->get('view', 'book');
$task = JFactory::getApplication()->input->get('task', 'index');
JFactory::getApplication()->input->set('task', "$view.$task");
$controller = JController::getInstance('MyBooks');
$controller->execute($task);
$controller->redirect();
32. Controller - part 1
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
defined('_JEXEC') or die('The way is shut!');
jimport('joomla.application.component.controlleradmin');
/**
* MyBooksControllerBook class.
*
* @see JControllerAdmin
*/
class MyBooksControllerBook extends JControllerAdmin
{
/**
* Controller's view.
*
* @var JView
*/
private $view;
...
33. Controller - part 2
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
/**
* Class constructor.
*
* @param type $config
*/
public function __construct($config = array())
{
parent::__construct($config);
$this->model = $this->getModel();
$this->view = $this->getView(JFactory::getApplication()->input->get('view',
'book'), 'html');
$this->view->setModel($this->model, true);
$this->view->setModel($this->getModel('Author', 'MyBooksModel'), false);
$this->view->setModel($this->getModel('Editor', 'MyBooksModel'), false);
}
...
34. Controller - part 3
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
public function index()
{
$this->view->setLayout('index')
$this->view->display();
}
public function create()
{
$this->view->setLayout('create');
$this->view->display();
}
public function save()
{
$data = JFactory::getApplication()->input->get('jform', null);
if (!$data || !$this->model->validate($data)) {
$msg = 'Invalid data!';
$type = 'error';
$this->setRedirect('index.php?option=com_mybooks&view=book&task=create',
$msg, $type);
return false;
}
35. Model - part 1
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
defined('_JEXEC') or die('The way is shut!');
jimport('joomla.application.component.model');
jimport('joomla.html.pagination');
class MybooksModelBook extends JModel
{
private $table = '#__mybooks_book';
public function __construct($config = array())
{
parent::__construct($config);
$app = JFactory::getApplication();
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app-
>getCfg('list_limit'), 'int');
$limitstart = $app->input->get('limitstart', 0, '', 'int');
$this->setState('limit', $limit);
$this->setState('limitstart', $limitstart);
$this->setState('author_id', $app->getUserStateFromRequest('com_mybooks.filters.
author_id', 'author_id', 0, 'int'));
}
36. Model - part 2
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
public function getList() {
return $this->_getList(
$this->buildQuery(), $this->getState('limitstart'), $this->getState('limit')
);
}
public function getLast() {
$query = $this->_db->getQuery(true);
$query->select('*')->from($this->table)->orderby('created_at DESC');
$this->_db->setQuery($query,0,1);
$results = $this->_db->loadObjectList('id');
return $results ? $results : array();
}
public function getLastByAuthor($author_id) {
$query = $this->_db->getQuery(true);
$query->select('*')->from($this->table)->where(“author_id = '$author_id'”)-
>orderby('created_at DESC');
$this->_db->setQuery($query,0,1);
return $this->_db->loadObject();
}
37. Model - part 3
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
public function create($data) {
if (!$data) {
return 0;
}
$data['created_at'] = date('Y-m-d H:i:s');
$query = $this->_db->getQuery(true);
$query->insert($this->table)->columns(array_keys($data))->values(sprintf("'%s'",
implode("','", array_values($data))));
$this->_db->setQuery($query);
return false === $this->_db->execute() ? 0 : $this->_db->insertid();
}
...
38. Model - part 4
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
public function delete($ids) {
$query = $this->_db->getQuery(true);
$query->delete()->from($this->table)->where('id IN '.implode(',', $ids));
return false !== $this->_db->execute();
}
public function getPagination(){
return new JPagination(
$this->_getListCount($this->buildQuery()), $this->getState('limitstart'),
$this->getState('limit')
);
}
private function buildQuery(){
$where = $this->buildWhere();
$query = $this->_db->getQuery(true);
return $query->select('*')->from($this->table)->where($where)->orderby
('created_at DESC');
}
...
39. View - part 1
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
defined('_JEXEC') or die('The way is shut!');
jimport('joomla.application.component.view');
class MyBooksViewBook extends JView
{
public function display($tpl = null)
{
$this->pagination = $this->getModel()->getPagination();
$this->filter_author_id = $this->getModel()->getState('author_id');
$this->books = $this->getModel()->findAll();
$this->authors = $this->getModel('Authors')->getList();
$this->editors = $this->getModel('Editors')->getList();
$this->addToolbar($tpl);
parent::display($tpl);
}
40. View - part 2
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
...
protected function addToolbar($tpl){
$methodName = 'addToolBar' . ucfirst(!$tpl ? 'default' : $tpl);
$this->{$methodName}();
}
private function addToolBarDefault(){
JToolBarHelper::title(JText::_('COM_MYBOOKS') . ': ' . JText::_
('COM_MYBOOKS_BOOK_LIST'));
JToolBarHelper::addNew('create');
JToolBarHelper::preferences('com_mybooks');
JToolBarHelper::divider();
JToolBarHelper::deleteList('COM_MYBOOKS_BOOK_LIST_DELETE_CONFIRM', 'delete');
}
private function addToolBarCreate(){
JToolBarHelper::title(JText::_('COM_MYBOOKS') . ': ' . JText::_
('COM_MYBOOKS_BOOK_NEW'));
JToolBarHelper::apply('save');
JToolBarHelper::divider();
JToolBarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mybooks');
}
}
41. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
42. Helpers
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Common (usually static) functions not related
to a specific object
● Get date / time / external info
● Format date and numbers
● Build title and/or other HTML snippets
43. Table classes
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Interface to and from the database
Active Record pattern
● Define table name and unique id
● load, store, delete, and so on
44. Table classes - sample code
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
<?php
class TableBook extends JTable
{
public function __construct(&$db)
{
parent::__construct(‘#__books’, ‘id’, $db);
}
}
45. Layouts
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Page types related to a single view (object)
"tmpl" subfolder (template override)
● List
● Single item (readonly)
● Single item (edit form)
● Blog
● ...
46. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
47. System messages
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
$app = JFactory::getApplication();
$app->enqueueMessage( $msg, $type )
48. JError / JException / JLog
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Error handling vs. logging
● JError is deprecated
● JException is deprecated
● Use basic PHP Exception class
● JLog is a way to track what's happening
49. Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
50. Visibility
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
Variables and methods
● "var ..." is deprecated since PHP 5.1.2
● public : available from other classes
● private : available only from the class
● protected : available from the class and
from inherited or parent classes
51. Constants
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● constants instead of variables
● drop DS
● drop DIRECTORY_SEPARATOR
● use Joomla constants:
http://docs.joomla.org/Constants
● warning: JPATH_SITE vs JPATH_BASE vs
JPATH_ROOT vs JPATH_ADMINISTRATOR
52. Versioning
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com
● version format: major.minor.release (es. v3.1.5)
● variant: v3.1.5 Free, v3.1.5 Pro
53. And the road goes on and on
Francesco Abeni for GiBiLogic
http://extensions.gibilogic.com - info@gibilogic.com