This document introduces CodeIgniter, an open source PHP web application framework based on the Model-View-Controller (MVC) pattern. It discusses why MVC frameworks are useful for building enterprise web applications. CodeIgniter provides features like routing, database access, form validation and security filtering to help structure applications and make tasks less tedious. The document outlines CodeIgniter's directory structure, controllers, views, helpers and libraries to demonstrate how it implements the MVC pattern.
My popular talk on Debugging WordPress, presented at WordCamp London, WordCamp Norrkoping, Software University and WPBGUG
Video: http://wordpress.tv/2014/05/23/mario-peshev-debugging-wordpress/
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
LinkRest is an active project commissioned and open sourced by NHL under Apache 2.0 license. It was conceived specifically as the server-side counterpart to Ext JS, so it natively supports Ext JS rest proxy, including CRUD, grouping, sorting, filtering, and more. In this session, we'll review Ext JS protocol support. You'll also see extensions that allow the client to safely query the server for specific data and shape the response. We'll cover advanced features, including security, constraints, idempotent methods, and metadata service. We'll show demos and try to allow time for Q&A.
My popular talk on Debugging WordPress, presented at WordCamp London, WordCamp Norrkoping, Software University and WPBGUG
Video: http://wordpress.tv/2014/05/23/mario-peshev-debugging-wordpress/
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
LinkRest is an active project commissioned and open sourced by NHL under Apache 2.0 license. It was conceived specifically as the server-side counterpart to Ext JS, so it natively supports Ext JS rest proxy, including CRUD, grouping, sorting, filtering, and more. In this session, we'll review Ext JS protocol support. You'll also see extensions that allow the client to safely query the server for specific data and shape the response. We'll cover advanced features, including security, constraints, idempotent methods, and metadata service. We'll show demos and try to allow time for Q&A.
WP-CLI is an awesome WordPress plugin that can be used to automate a bunch of difficult WordPress tasks. This presentation walks you through basic WP-CLI commands and creating custom commands.
PPT on Adobe CQ introduction, it's benefits, architecture.
To get a detailed description please go through: https://www.youtube.com/watch?v=h_S8hCLzlMU
Introducing Monsoon PHP Framework (monsoonphp.com). You can maintain your API and CLI code in the same codebase of your Application using the MVC pattern. The framework assists developers in creating a simple, fast and secure application very quickly. See this slideshow for an introduction. Proudly made in Bhārat (India).
Have you ever cried yourself to sleep unable to find the cause of a horrendous bug in your WordPress site? Cry no more, your tears will be reshaped as blinding swords as we explore uncharted territories laced with mystical creatures.
Debugging is an often avoided topic due to the uncertainty of how best to accomplish it and the lack of powerful introspective tools. This talk will explore new territory and showcase tools that help you debug complex and difficult issues in your WordPress site.
My talk from WordCamp Raleigh 2014 on managing a large WordPress multisite network.
Supporting lots of standalone instances of WordPress can be a nightmare. Thankfully there is WordPress Multisite. But is it right for you? And what happens when your WordPress network explodes to include thousands of users and sites? At UNC-Chapel Hill our two WordPress multisite networks (self-serve/enterprise) power over 8,000 sites across a wide range of use cases. During this presentation I primarily explore the technical aspects of running a WordPress multisite network, such as scalability, security, user experience, and administrative challenges. I share tips, lessons learned, and ongoing challenges.
Speeding up your WordPress Site - WordCamp Toronto 2015Alan Lok
This is a revised talk from the May 2015 presentation I gave to WordCamp Hamilton. At the end of this presentation you should have some ideas on how to speed up your WordPress site from within (plugins, code / theme optimizations) to environmental changes.
What you need to know to upgrade to a self-hosted WP website. An overview of WordPress website hosting options and their impact on your WordPress website. A visual map of the site setup path through Dashboard menus and settings.
Modernizing WordPress Search with ElasticsearchTaylor Lovett
WordPress search is notoriously lacking. Using Elasticsearch and the 10up WordPress plugin ElasticPress, we can do amazing things with search very performantly.
Presentation of codeigniter to understand the framework and easy to understand for beginners.Codeigniter is php framework easy to learn and useful for start into web devlopment.
WP-CLI is an awesome WordPress plugin that can be used to automate a bunch of difficult WordPress tasks. This presentation walks you through basic WP-CLI commands and creating custom commands.
PPT on Adobe CQ introduction, it's benefits, architecture.
To get a detailed description please go through: https://www.youtube.com/watch?v=h_S8hCLzlMU
Introducing Monsoon PHP Framework (monsoonphp.com). You can maintain your API and CLI code in the same codebase of your Application using the MVC pattern. The framework assists developers in creating a simple, fast and secure application very quickly. See this slideshow for an introduction. Proudly made in Bhārat (India).
Have you ever cried yourself to sleep unable to find the cause of a horrendous bug in your WordPress site? Cry no more, your tears will be reshaped as blinding swords as we explore uncharted territories laced with mystical creatures.
Debugging is an often avoided topic due to the uncertainty of how best to accomplish it and the lack of powerful introspective tools. This talk will explore new territory and showcase tools that help you debug complex and difficult issues in your WordPress site.
My talk from WordCamp Raleigh 2014 on managing a large WordPress multisite network.
Supporting lots of standalone instances of WordPress can be a nightmare. Thankfully there is WordPress Multisite. But is it right for you? And what happens when your WordPress network explodes to include thousands of users and sites? At UNC-Chapel Hill our two WordPress multisite networks (self-serve/enterprise) power over 8,000 sites across a wide range of use cases. During this presentation I primarily explore the technical aspects of running a WordPress multisite network, such as scalability, security, user experience, and administrative challenges. I share tips, lessons learned, and ongoing challenges.
Speeding up your WordPress Site - WordCamp Toronto 2015Alan Lok
This is a revised talk from the May 2015 presentation I gave to WordCamp Hamilton. At the end of this presentation you should have some ideas on how to speed up your WordPress site from within (plugins, code / theme optimizations) to environmental changes.
What you need to know to upgrade to a self-hosted WP website. An overview of WordPress website hosting options and their impact on your WordPress website. A visual map of the site setup path through Dashboard menus and settings.
Modernizing WordPress Search with ElasticsearchTaylor Lovett
WordPress search is notoriously lacking. Using Elasticsearch and the 10up WordPress plugin ElasticPress, we can do amazing things with search very performantly.
Presentation of codeigniter to understand the framework and easy to understand for beginners.Codeigniter is php framework easy to learn and useful for start into web devlopment.
• PHP stands for PHP: Hypertext Preprocessor
• PHP is a server-side scripting language like ASP
• PHP scripts are executed on the server
• PHP supports many databases (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
• PHP is an open source software
• PHP is free to download and use
Code for Startup MVP (Ruby on Rails) Session 1Henry S
First Session on Learning to Code for Startup MVP's using Ruby on Rails.
This session covers the web architecture, Git/GitHub and makes a real rails app that is deployed to Heroku at the end.
Thanks,
Henry
Lecture on CodeIgniter, # OSS Essential Training Program at Chittagong University of Engineering Technology, February 2008, http://bdosdn.org/wsatcuet.php
SOLID Programming with Portable Class LibrariesVagif Abilov
Developers often don't pay attention to code portability until they need to target multiple platforms. However, large amount of non-portable code often hints about violation of clean code principles, so it is worth investigating which part of the source code base are platform-specific and for what reasons.
In this session we will give an overview of portable class libraries, show how to extract PCL components from a real-world application and go through typical challenges that are faced when writing portable code. We will present the original tool that analyzes assemblies for portability compliance and can be used as a guard to prevent mixing business logic with infrastructure-specific functionality. Finally we will demonstrate how PCLs help targeting platforms such as Windows Store, Android and iOS.
Add-On Development: EE Expects that Every Developer will do his Dutyreedmaniac
Add-Ons are what make ExpressionEngine the flexible powerhouse that it is today. Being able to write your own simple plugins or incredibly expansive modules allows you to mold ExpressionEngine to nearly any task that your website might require. However, with that power comes a great responsibility to insure that your code is not slowing down the entire site or unduly stressing the server through bad code architecture.
There are simple tools already built into ExpressionEngine and PHP that you can use to see precisely what your Add-On is doing during page processing and where it might be doing more work than is absolutely necessary. Every developer should use these to optimize their work from the very beginning of development, prior to release. This workshop will explain these tools and how you can use them effectively. It will also delve deeper into optimization techniques and tricks that will keep your code light and clean, while finding a balance between functionality and performance.
BackboneJS Training - Giving Backbone to your applicationsJoseph Khan
BackboneJS Training PPT Slides. Giving Backbone to your applications.
Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
Lesson teached at Università di Roma Tre - Software Engineering course.
Web is plenty of amazing tools used daily by millions of people. A good idea can turn to be a highly profitable business if well executed. Yii framework is an ideal tool to build in short time an MVP of your product to start as soon as possible to find your market fit. Here follows some infos about the framework and steps on how to build a simple blog over Yii.
MVCL pattern, web flow, code flow, request and response in OpenCartSelf
As described in “OpenCart theme and Module development” book, it says “OpenCart is an e-commerce shopping cart application built with its own in-house framework which uses MVCL (Model, view, controller and language) pattern. Thus, each module in OpenCart also follows the MVCL pattern. The controller creates logic and gathers data from the model and it passes data to display in the view.”
User request to the controller through website URL,
controller loads the language and set the variable for any text used in the data.
If data is needed from the database controller loads the model, ask for result and model send back results, then controller set results to data.
All these data are sent to View which renders and show the output
https://webocreation.com/blog/describing-files-folder-opencart-framework
Add-On Development: EE Expects that Every Developer will do his DutyLeslie Doherty
A presentation on Add-On Development: EE Expects that Every Developer will do his Duty as given at the EECI2009 conference in Leiden by Paul Burdick, lead developer at Solspace.
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.
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.
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.
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
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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
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.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
PHP Frameworks: I want to break free (IPC Berlin 2024)
Codeigniter
1. CodeIgniter and MVC
Enterprise class web application development
Dienstag, 4. Mai 2010
2. Motivation
• You have worked with PHP, for small sites this works very well. HTML files
can be easily extended with dynamic content from the database, form
processing, etc.
• When sites grow, you might have realized that across multiple pages lots of
code repetition occurs. This is a problem when you need to change certain
parts of a page, that affects many or all pages.
• Furthermore, its hard to introduce new developers to code someone else
has written. It takes a long time to get familar with the code.
Dienstag, 4. Mai 2010
3. Motivation
• Enterprise class (big) web applications need structure, one HTML file per
page with PHP code is not optimal => things get confusing, hard to work in
teams, etc.
• Web Application Frameworks provide such a structure wich introduce
seperation of concern, etc.
• Most common for Web application development are frameworks that are
based on the Model-View-Controller design pattern
• Motivation video for a MVC framework:
http://www.youtube.com/watch?v=p5EIrSM8dCA
Dienstag, 4. Mai 2010
4. Model-View-Controller
• „Seperation of concerns“ of Logic and Presentation
• Controller: Handles all incoming HTTP requests, passes data to the views
• View: Renders the HTML output
• Models: Encapsulate Business Logic, such as interaction with the database
• For PHP we introduce CodeIgniter
Dienstag, 4. Mai 2010
5. CodeIgniter
• CodeIgniter is a PHP-based MVC framework that helps structure your code
and make redundant tasks less tedious.
• There are countless similar PHP frameworks, the most popular ones being
CakePHP and symfony. Ruby on Rails is famous in the Ruby world.
• CodeIgniter is very light weight. It doesn‘t force any convention but provides
many commonly required features through a set of build in libraries.
• CodeIgniter has a low learning curve and is one of the best documented PHP
web frameworks.
Dienstag, 4. Mai 2010
6. CodeIgniter: Features
• Model-View-Controller Based System
• Extremely Light Weight, does not force any convention
• Full Featured database classes with support for several platforms,
Active Record Database Support (ORM)
• Custom Routing
• Form and Data Validation
• Security and XSS Filtering
Dienstag, 4. Mai 2010
7. Application Flow Chart
1. The index.php serves as the front controller, initializing the base resources needed
to run CodeIgniter.
2. The Router examines the HTTP request to determine what should be done with it.
3. If a cache file exists, it is sent directly to the browser, bypassing the normal
system execution.
4. Security. Before the application controller is loaded, the HTTP request and any
user submitted data is filtered for security.
5. The Controller loads the model, core libraries, plugins, helpers, and any other
resources needed to process the specific request.
6. The finalized View is rendered then sent to the web browser to be seen. If caching
is enabled, the view is cached first so that on subsequent requests it can be
served.
Dienstag, 4. Mai 2010
8. Getting Started
• Directory Structure of CodeIgniter:
• index.php - recieves all requests and routes
to the right controllers classes and actions,
parameters are included in the URL
• /system - contains all CodeIgniter classes
and libraries provided by the framework
• /application - this is where your application
code is located, including the model, view
and controller classes
Dienstag, 4. Mai 2010
9. Controllers
• Take incoming HTTP requests
and process them
• Must be the same filename as
the capitalized class name
• Must extend the main
Controller class of CodeIgniter
• Each class function represents
an controller action, which is
redering a HTML page
• „index“ is the default action
Dienstag, 4. Mai 2010
10. Routing Requests
• Per default CodeIgniter maps URL to
controller actions:
/index.php/controller/action
• The default controller is „welcome“
and the default action is „index“.
• Custom routing can be configured
through:
/application/config/routes.php
Dienstag, 4. Mai 2010
11. Views
• Are HTML pages or page fragments
• Those are load and sent by the
Controller to the Browser by the use
of the following code in den Ctrl:
$this->load->view(‘blog_view‘);
• There is no application logic in the
views, only display logic
(to some degree)
• <?= is short form for <?php echo
Dienstag, 4. Mai 2010
13. Helpers
• Helper functions are located in
/application/helpers/
• These are small PHP functions
that provide shortcuts, to
outsource often used code
• For example formatting, text,
url or form helpers
• Needs to be loaded through:
$this->load->helper(‘name‘);
Loading a Helper
$this->load->helper('name');
Using a Helper
<?php echo anchor('blog/comments', 'Click Here');?>
Auto-loading Helpers
application/config/autoload.php
Text Helper
$this->load->helper('text');
word_limiter()
$string = "Here is a nice text string
consisting of eleven words.";
$string = word_limiter($string, 4);
// Returns: Here is a nice…
Dienstag, 4. Mai 2010
14. Libraries
• Libraries are similar to helpers
• The also need to be loaded through:
$this->load->library('classname');
• The difference is that they encapsulate more
complex functionality, such as image processing,
form validation handling, caching, etc.
• Libraries allow to dynamically extend
CodeIgniters functionality and extendability
Dienstag, 4. Mai 2010
15. Database Handling
• CodeIgniter provides a simple way
to access the database.
• It encapsulates the underlying
database (MySQL, Oracle, etc)
• The connection handling is done by
CodeIgniter and configured through:
/application/config/database.php
• Provides security through automatic
escaping of inserted data, avoids
Cross-Side Scripting (CSS) attacks
Initializing the Database Class
$this->load->database();
Standard Query With Multiple Results
$query = $this->db->query('SELECT name,
title, email FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->email;
}
echo 'Total Results: ' . $query->num_rows();
Database Configuration
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
Dienstag, 4. Mai 2010
16. Active Records
• CodeIgniter uses a modified version of
the Active Record Database Pattern.
• This pattern allows information to be
retrieved, inserted, and updated in
your database with minimal scripting.
Selecting Data
Inserting Data
Method Chaining
Dienstag, 4. Mai 2010
17. Application Profiling
• The Profiler Class will display
benchmark results, queries you
have run, and $_POST data at
the bottom of your pages.
• This information can be useful
during development in order to
help with debugging and
optimization.
• Enabling the Profiler
somewhere in the Controller:
$this->output->enable_profiler(TRUE);
Dienstag, 4. Mai 2010
18. Further Reading and Resources
• CodeIgniter User Guide:
http://codeigniter.com/user_guide/index.html
• Tutorials and Video Tutorials:
http://codeigniter.com/wiki/Category:Help::Tutorials
• Model-View-Controller and CodeIgniter:
http://www.zenperfect.com/2007/07/12/model-view-controller-and-codeigniter/
Dienstag, 4. Mai 2010