This book provides an overview of advanced PHP techniques for building professional web applications. It covers topics like improved session management, multiple database interaction, better form processing, file handling, authentication, error handling, and generating dynamic graphics. The book is intended for PHP developers who want to learn more advanced concepts. It uses numerous code examples to illustrate the techniques.
The document provides an overview of key performance sanity checks for SharePoint, including 7 steps to check SharePoint health, how to analyze SharePoint usage, and how to identify slow pages. It discusses checking end user health, site health, system health, IIS health, AppPool health, SQL and service health, and web parts. The document also covers avoiding common deployment mistakes and provides a real-life example of troubleshooting a slow page load for a frustrated user.
When it all goes wrong (with Postgres) | RailsConf 2019 | Will Leinweber
You're woken up in the middle of the night to your phone. Your app is down and you're on call to fix it. Eventually you track it down to "something with the db," but what exactly is wrong? And of course, you're sure that nothing changed recently…
Knowing what to fix, and even where to start looking, is a skill that takes a long time to develop. Especially since Postgres normally works very well for months at a time, not letting you get practice!
In this talk, I'll share not only the more common failure cases and how to fix them, but also a general approach to efficiently figuring out what's wrong in the first place.
When it all goes wrong | PGConf EU 2019 | Will Leinweber
This document summarizes a presentation about troubleshooting Postgres performance problems. It discusses how to determine if the issue is with the database, system resources, or the application. It provides examples of common problems like running out of CPU, memory, disk, or parallelism. It also recommends tools to diagnose issues like perf, gdb, iostat, iotop, htop, bwm-ng, and pg_stat_statements. Finally, it discusses setting boundaries around economics, workload, performance, and errors to avoid instability.
The document discusses non-blocking Python web servers. It begins by explaining that blocking web servers, like those using Django, require clients to wait online for a response, whereas non-blocking servers like Tornado can handle multiple requests concurrently using an event loop. It then provides examples of implementing non-blocking behavior using callbacks, coroutines, and yield statements in Tornado. Finally, it emphasizes thinking beyond just coding and algorithms to consider blocking vs non-blocking behavior across the full stack, and provides Motor as a non-blocking MongoDB driver.
This document discusses using Fiddler, a web debugging proxy, to debug HTTP traffic and tune proxy settings. It highlights how Fiddler scripts allow setting breakpoints to inspect JavaScript files from multiple hosts to find the source of unwanted content, and how Fiddler can be used to download malware signatures and lists of dynamic DNS domains for analysis.
WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
The document discusses various techniques for caching websites to improve performance. It covers full page caching plugins like WP Super Cache and W3 Total Cache. It also discusses ways to optimize web servers like Apache and Nginx, speed up PHP parsing, use memcache for generic data storage, implement opcode caching, and do fragment caching. The goal of these caching techniques is to serve cached static content instead of dynamically generating pages each time to improve load times and server efficiency.
This document provides tips and rules for learning Joomla CMS in a weekend for programmers. It discusses choosing the right development environment like PHPStorm, understanding Joomla architecture by reviewing core extensions, keeping projects simple, and seeking advice from expert communities. Resources recommended include the Component Creator tool, books on Joomla programming, and video tutorials for building basic extensions. The document aims to help new developers get started quickly with Joomla.
I broke what?!??!? Taking over maintenance on well loved projects
The document discusses the speaker becoming the maintainer of the Python WebOb library. Some key points:
- The speaker was given commit access to WebOb and added as the maintainer on PyPI after contributing fixes and being active on IRC.
- As maintainer, the speaker had ideas to improve the code but quickly learned that even small changes can break dependencies, requiring care around backwards compatibility.
- It is important to consider existing users and set deprecation policies before making changes. The speaker advocates refactoring code over time rather than rewriting.
- Being a maintainer involves being a gatekeeper for standards while growing the community and finding the next generation of contributors.
The document discusses various Platform as a Service (PaaS) technologies including Amazon Web Services, Google App Engine, and Microsoft Live Mesh. It notes that these services allow developers to avoid maintaining their own infrastructure and focus on their applications instead. The document also covers JavaFX, a new platform from Sun Microsystems that aims to enable rich user experiences across devices using Java technologies.
Everyones invited! Meet accesibility requirements with ColdFusion
ColdFusion Summit 2016 was announced as an event for everyone except Chad, who was not invited due to prior actions. The document then discussed accessibility requirements and how to meet them using ColdFusion. It noted the importance of compliance and ensuring software is available to all. Examples were given of inaccessible software like Dwarf Fortress and how ARIA attributes can help. The challenges of getting developers to comply were addressed by discussing how one company created their own Markup Language (MCML) of custom tags to enforce standards and ensure 508 compliance. They achieved full compliance over time through this framework and using interns to update code. Testing and responsibilities were also emphasized.
Part of the SPBiz Conference, a real-world look at some basic and complex SharePoint scenarios that did not go so well. However, each issue has a solution or an alternate method to resolve it. In this presentation, we follow a six step process to analyze, solve and prevent SharePoint issues & "debacles".
This document discusses best practices for open source projects and frameworks, including being respectful of all community members, having high-quality documentation, following semantic versioning, being transparent about releases and security fixes, and providing migration guides for breaking changes. It also recommends having opinions but flexibility in code generation and conventions, future-proofing APIs, and learning from mistakes in an open and rewarding process.
Voor het maken van single page web applications lijkt MVC met databinding de standaard. Daarmee zijn fouten lastig te achterhalen. Facebook ondervond dat ook en koos voor een functionele aanpak: ReactJS. Deze sessie geeft een introductie, gaat dieper in op ogenschijnlijke snelheid nadelen en laat zien hoe je herbruikbare React componenten bouwt. Tevens zal ASP.NET MVC gebruikt worden voor server side rendering van de initiële state, ideaal voor search engines die meestal een probleem hebben met single page apps. Na deze sessie zul je nooit meer hetzelfde denken over web UI’s.
The document discusses corporate governance and accountability. It provides an overview of a lecture on this topic, including a discussion on governance and accountability, corporate social responsibility and accounting, and a case presentation on AIG. The lecture aims to critically review studies on the impact of corporate social responsibility on firm value. It also describes CSR indices and evaluates their usefulness.
Scalability analysis of a media aware network element
This document summarizes a presentation on analyzing the scalability of a Media Aware Network Element (MANE). The MANE acts as an edge router to identify media traffic and enforce service level agreements. It was implemented using Click modular router on Linux with minimal overhead. Experiments showed forwarding performance was similar to standard Linux while supporting quality of service policies. Future work includes improving classification and multicast support to further optimize scalability.
The document provides an overview of workflow management systems and introduces the Workflow Management Coalition's Workflow Reference Model. It defines key terms like workflow, workflow management systems, and process definition. It describes the main functions of workflow systems as build-time functions to define processes, and run-time functions to control process instances and enable interaction with users and applications. The reference model identifies potential areas for standardization, including process definitions and application programming interfaces, to enable interoperability between heterogeneous workflow products and integration with other IT services.
On the Diversity of the Accountability Problem. Machine Learning and Knowing ...
This document discusses the accountability problem with machine learning algorithms. It notes that there are two types of algorithms - those explicitly coded and those that learn statistical patterns in data. These latter types can be difficult to assess and shift the focus from normative values to empirical patterns in data. It also discusses how algorithms can learn sensitive personal attributes from innocuous Facebook likes and how risk algorithms associate many data points with loan default risk. The document argues that accountability is not enough and that regulation will need to be domain-specific while exploring approaches like consumer protections and data restrictions. It concludes that algorithms reflect societal structures and turning this into profit always raises normative issues requiring attention to commercial influences and consideration of more egalitarian alternatives.
This document discusses key considerations for implementing a successful sales promotion campaign, including:
1) Estimating budgets by calculating opportunity to apply (OTA), redemption rates, and costs per pack. Getting the budget wrong can be risky.
2) Developing a structured planning process using SOSTAC (Situation, Objectives, Strategy, Tactics, Action, Control) to set KPIs, potential solutions, and operational plans.
3) Understanding important legal aspects like the UK Advertising Codes, ensuring promotions are legal, decent, honest and don't mislead or take advantage of children. Regulations vary significantly in other countries.
This document discusses management control systems. It covers control processes that monitor activities to ensure they are accomplished as planned and correct deviations. It also discusses approaches to control like market, bureaucratic and clan systems. Types of control involve measuring actual performance against standards. Categories of control systems include diagnostic, boundary and personal/interactive controls.
The document discusses balancing the workload between two production lines - an assembly line and a testing/packaging line - for two digital imaging printer models, DI-910 and DI-950. It notes that the DI-910 takes 3 minutes for assembly but 4 minutes for testing, while the DI-950 takes 6 minutes for assembly but only 2 minutes for testing. The optimal solution is to produce 80 units of the DI-950 per day to balance the 480 total minutes of available time between the two lines.
The document proposes a new workflow process to improve team effectiveness at a forensic hospital. It identifies issues with the current process such as lack of communication, documentation, and oversight. The proposed process establishes a small governance committee and scorecard system to provide clear ownership, transparency, and continuous process improvement. It includes deployment timelines and templates to standardize documentation and reduce duplication when implementing the new workflow.
Distributed Systems: scalability and high availability
Distributed systems use multiple computers that interact over a network to achieve common goals like scalability and high availability. They work to handle increasing loads by either scaling up individual nodes or scaling out by adding more nodes. However, distributed systems face challenges in maintaining consistency, availability, and partition tolerance as defined by the CAP theorem. Techniques like caching, queues, logging, and understanding failure modes can help address these challenges.
A final objective for sales promotion is to enhance or support the integrated marketing communications effort for a brand or company. While building or maintaining brand equity was traditionally viewed as something that was done through media advertising, it has also become an important goal for marketers as they develop their sales promotion programs.
A very successful talk where in I discuss the top 10 failures of organizations I have personally experienced when trying to scale. More than just performance!
The document discusses best practices for scalability and performance when developing PHP applications. Some key points include profiling and optimizing early, cooperating between development and operations teams, testing on production-like data, caching frequently accessed data, avoiding overuse of hard-to-scale resources, and using compiler caching and query optimization. Decoupling applications, caching, data federation, and replication are also presented as techniques for improving scalability.
30 Skills to Master to Become a Senior Software Engineer
The document discusses 30 skills that software engineers should master to become senior engineers, including skills with programming languages like PHP, databases, SQL, HTML, CSS, JavaScript frameworks, build tools like Gulp, version control with Git, server-side frameworks like Laravel, object-relational mappers, and using database seeding and migrations. It emphasizes the importance of being well-rounded and having experience with both front-end and back-end technologies as well as tools that improve productivity and maintainability. Mastering these skills can lead to higher salaries, more leadership opportunities, and building more robust applications.
Zend Platform provides tools to help PHP applications scale. It includes PHP Intelligence for application monitoring, performance features like job queues and caching, and session clustering to share session data across multiple servers. It offers comprehensive and integrated solutions to common problems in scaling PHP applications.
The Guide to becoming a full stack developer in 2018
This document provides a guide for becoming a full-stack developer in 2018. It outlines 8 key skills needed: 1) HTML/CSS, 2) JavaScript, 3) a back-end language like Node.js, Ruby, Python, or PHP, 4) databases and web storage, 5) HTTP and REST, 6) web application architecture, 7) Git, and 8) basic algorithms and data structures. For each skill, it provides details on important concepts and tools to learn. The goal is to learn both front-end skills like HTML/CSS and back-end skills like databases, APIs, and server-side programming in order to build complete web applications.
Tony Bibbs presented on frameworks for PHP development. He discussed when frameworks should and should not be used, common risks of frameworks, and typical framework components like MVC, ORM, templates. His key recommendation was to only change one component of a framework at a time through incremental improvements.
This document summarizes techniques for building scalable websites with Perl, including caching whole pages, chunks of HTML/data, and using job queuing. Caching helps performance by reducing workload and scalability by lowering database load. Large sites like Yahoo cache aggressively. Job queuing prevents overloading resources and keeps websites responsive under high demand by lining requests up in a queue.
The document discusses the pros and cons of using open source software in projects. It notes that open source code comes with various licenses like GPL, BSD, and MIT that differ in how they can be used. While open source lacks perceived accountability, it actually has governance structures. The document aims to provide context on open source licensing and use within the scope of incorporating external code into a project. It addresses common concerns about open source like licensing complexity but clarifies the intent is to protect author rights, not hinder code use.
PHP – Faster And Cheaper. Scale Vertically with IBM i
The only way to scale your PHP application is horizontally? If you believe that then you could be missing a huge opportunity. This talk will layout why scaling vertically with the Power System platform can be a superior alternative to a traditional LAMP stack. With simplify development, reduce operation costs and a true enterprise quality database
The document provides tips for building a scalable and high-performance website, including using caching, load balancing, and monitoring. It discusses horizontal and vertical scalability, and recommends planning, testing, and version control. Specific techniques mentioned include static content caching, Memcached, and the YSlow performance tool.
Aspect oriented programming (AOP) allows developers to separate cross-cutting concerns from the main application code. This helps keep code organized and focused on single responsibilities. AOP works by defining points in the program execution, called join points, where additional behavior can be inserted. This additional behavior is defined through advice that runs before, after, or around join points. Pointcuts are used to identify which join points specific advice should apply to. Aspects group advice and pointcuts to encapsulate a concern.
Stream SQL eventflow visual programming for real programmers presentation
Richard Tibbetts, CTO, StreamBase Systems.
StreamSQL EventFlow is one of the most popular languages for Complex Event Processing (CEP), a data management paradigm for real-time applications. Based on a stream-relational data model common to other CEP languages, EventFlow is unique in that it is a visual language. This talk will focus on the design of visual representations for key features including event dispatch, modularity, data parallelism, polymorphism, and dependency injection, and on the co-development of an Eclipse-based IDE along with a new programming language. StreamSQL EventFlow is the primary programming language for the StreamBase Event Processing Platform.
Complex Event Processing platforms are used to process large volumes of event-oriented data in real-time, often in latency-critical applications such as securities trading. Combining clustering, messaging, queuing, data storage, and application logic into one system minimizes latency and gives the programmer control over all aspects of the application.
StreamSQL EventFlow is an executable visual language for building CEP applications, unlike visual environments designed for non-developers, or architecture-focused modeling tools. The talk will cover experiences overcoming prejudice against visual programming languages, and how critical development tools are to that process. We will also discuss some details of the implementation including the compiler, a visual debugger, and diff/merge functionality.
This document summarizes a presentation about PHP development best practices including deployment strategies, unit testing, and techniques for building scalable applications. The presentation discusses using PEAR, OS packages, source control, or rsync for deployment. It also covers writing unit tests, characteristics of queueing and scalable computing, and considerations for building applications that can scale. The presenter encourages attending ZendCon to learn more about these topics.
2019 StartIT - Boosting your performance with Blackfire
A workshop held in StartIT as part of Catena Media learning sessions.
We aim to dispel the notion that large PHP applications tend to be sluggish, resource-intensive and slow compared to what the likes of Python, Erlang or even Node can do. The issue is not with optimising PHP internals - it's the lack of proper introspection tools and getting them into our every day workflow that counts! In this workshop we will talk about our struggles with whipping PHP Applications into shape, as well as work together on some of the more interesting examples of CPU or IO drain.
UnConference for Georgia Southern Computer Science March 31, 2015
I presented to the Georgia Southern Computer Science ACM group. Rather than one topic for 90 minutes, I decided to do an UnConference. I presented them a list of 8-9 topics, let them vote on what to talk about, then repeated.
Each presentation was ~8 minutes, (Except Career) and was by no means an attempt to explain the full concept or technology. Only to wake up their interest.
So You Just Inherited a $Legacy Application… NomadPHP July 2016
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful “LEGACY” word to ring in your head. HAVE NO FEAR! I’ll share the techniques I’ve learned after working on several legacy codebases to help update that old code to the current PHP generation. We’ll cover triaging the old code base, writing tests to make sure you don’t break anything, and how to modernize your old code base!
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful "LEGACY" word to ring in your head. HAVE NO FEAR! I'll share the techniques I've learned after working on several legacy codebases to help update that old code to the current PHP generation. We'll cover triaging the old code base, writing tests to make sure you don't break anything, and how to modernize your old code base!
This presentation is about System administration with automation , it includes information about System administration and how automation can be used to progress and become efficient without human assistance.
ZF2 Modules: Events, Services, and of course, modularity
A presentation I gave at php[world], 2015 in Washington, DC on Zend Framework 2 focusing on the EventManager, ServiceManager, and how to build dependent-free modules for your applications
The document discusses using Vagrant and Puppet to create virtual machine environments for development. Vagrant allows defining and provisioning VMs through a Vagrantfile, while Puppet can further configure the VMs by installing software and configuring settings. Benefits include keeping development environments isolated, easy setup for new developers, and ability to deploy VMs to cloud providers like AWS. The key steps are downloading Vagrant and VirtualBox, defining the Vagrantfile, writing Puppet manifests, and running vagrant up to launch and provision the VM.
Fixing security by fixing software developmentNick Galbreath
Fixing Security by Fixing Software Development Using Continuous Deployment
Do you have an effective release cycle? Is your process long and archaic? Long release cycle are typically based on assumptions we haven't seen since the 1980s and require very mature organizations to implement successfully. They can also disenfranchise developers from caring or even knowing about security or operational issues. Attend this session to learn more about an alternative approach to managing deployments through Continuous Deployment, otherwise known as Continuous Delivery. Find out how small, but frequent changes to the production environment can transform an organization’s development process to truly integrate security. Learn how to get started with continuous deployment and what tools and process are needed to make implementation within your organization a (security) success.
The document discusses implementing video on the photo sharing website Flickr. It covers the four main tasks of uploading, transcoding, storage, and serving/playback of video files. Uploading large video files presents challenges around upload progress and receiving files on the server. Videos must be transcoded into common formats for cross-browser playback. Storing the large transcoded files and serving them for progressive download are also discussed. Flash is recommended for uploading and playback due to its ubiquity, though open source alternatives are mentioned.
You know that performance is crucial to your company's success, but do the people in the corner office know this? You need to get the message across using the language they speak and targeting the goals they care about.
This session -- presented by Strangeloop president Joshua Bixby at the 2011 Web Performance Summit -- summarizes the benefits of a faster website or web app, then delves into a series of how-tos for creating a business case for web performance in your organization.
This book provides an overview of advanced PHP techniques for building professional web applications. It covers topics like improved session management, multiple database interaction, better form processing, file handling, authentication, error handling, and generating dynamic graphics. The book is intended for PHP developers who want to learn more advanced concepts. It uses numerous code examples to illustrate the techniques.
The document provides an overview of key performance sanity checks for SharePoint, including 7 steps to check SharePoint health, how to analyze SharePoint usage, and how to identify slow pages. It discusses checking end user health, site health, system health, IIS health, AppPool health, SQL and service health, and web parts. The document also covers avoiding common deployment mistakes and provides a real-life example of troubleshooting a slow page load for a frustrated user.
When it all goes wrong (with Postgres) | RailsConf 2019 | Will LeinweberCitus Data
You're woken up in the middle of the night to your phone. Your app is down and you're on call to fix it. Eventually you track it down to "something with the db," but what exactly is wrong? And of course, you're sure that nothing changed recently…
Knowing what to fix, and even where to start looking, is a skill that takes a long time to develop. Especially since Postgres normally works very well for months at a time, not letting you get practice!
In this talk, I'll share not only the more common failure cases and how to fix them, but also a general approach to efficiently figuring out what's wrong in the first place.
When it all goes wrong | PGConf EU 2019 | Will LeinweberCitus Data
This document summarizes a presentation about troubleshooting Postgres performance problems. It discusses how to determine if the issue is with the database, system resources, or the application. It provides examples of common problems like running out of CPU, memory, disk, or parallelism. It also recommends tools to diagnose issues like perf, gdb, iostat, iotop, htop, bwm-ng, and pg_stat_statements. Finally, it discusses setting boundaries around economics, workload, performance, and errors to avoid instability.
The document discusses non-blocking Python web servers. It begins by explaining that blocking web servers, like those using Django, require clients to wait online for a response, whereas non-blocking servers like Tornado can handle multiple requests concurrently using an event loop. It then provides examples of implementing non-blocking behavior using callbacks, coroutines, and yield statements in Tornado. Finally, it emphasizes thinking beyond just coding and algorithms to consider blocking vs non-blocking behavior across the full stack, and provides Motor as a non-blocking MongoDB driver.
This document discusses using Fiddler, a web debugging proxy, to debug HTTP traffic and tune proxy settings. It highlights how Fiddler scripts allow setting breakpoints to inspect JavaScript files from multiple hosts to find the source of unwanted content, and how Fiddler can be used to download malware signatures and lists of dynamic DNS domains for analysis.
WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everythingtopher1kenobe
The document discusses various techniques for caching websites to improve performance. It covers full page caching plugins like WP Super Cache and W3 Total Cache. It also discusses ways to optimize web servers like Apache and Nginx, speed up PHP parsing, use memcache for generic data storage, implement opcode caching, and do fragment caching. The goal of these caching techniques is to serve cached static content instead of dynamically generating pages each time to improve load times and server efficiency.
Learning Joomla! in a weekend (for developers)Valentin Despa
This document provides tips and rules for learning Joomla CMS in a weekend for programmers. It discusses choosing the right development environment like PHPStorm, understanding Joomla architecture by reviewing core extensions, keeping projects simple, and seeking advice from expert communities. Resources recommended include the Component Creator tool, books on Joomla programming, and video tutorials for building basic extensions. The document aims to help new developers get started quickly with Joomla.
I broke what?!??!? Taking over maintenance on well loved projectsBert JW Regeer
The document discusses the speaker becoming the maintainer of the Python WebOb library. Some key points:
- The speaker was given commit access to WebOb and added as the maintainer on PyPI after contributing fixes and being active on IRC.
- As maintainer, the speaker had ideas to improve the code but quickly learned that even small changes can break dependencies, requiring care around backwards compatibility.
- It is important to consider existing users and set deprecation policies before making changes. The speaker advocates refactoring code over time rather than rewriting.
- Being a maintainer involves being a gatekeeper for standards while growing the community and finding the next generation of contributors.
The document discusses various Platform as a Service (PaaS) technologies including Amazon Web Services, Google App Engine, and Microsoft Live Mesh. It notes that these services allow developers to avoid maintaining their own infrastructure and focus on their applications instead. The document also covers JavaFX, a new platform from Sun Microsystems that aims to enable rich user experiences across devices using Java technologies.
Everyones invited! Meet accesibility requirements with ColdFusionColdFusionConference
ColdFusion Summit 2016 was announced as an event for everyone except Chad, who was not invited due to prior actions. The document then discussed accessibility requirements and how to meet them using ColdFusion. It noted the importance of compliance and ensuring software is available to all. Examples were given of inaccessible software like Dwarf Fortress and how ARIA attributes can help. The challenges of getting developers to comply were addressed by discussing how one company created their own Markup Language (MCML) of custom tags to enforce standards and ensure 508 compliance. They achieved full compliance over time through this framework and using interns to update code. Testing and responsibilities were also emphasized.
Part of the SPBiz Conference, a real-world look at some basic and complex SharePoint scenarios that did not go so well. However, each issue has a solution or an alternate method to resolve it. In this presentation, we follow a six step process to analyze, solve and prevent SharePoint issues & "debacles".
This document discusses best practices for open source projects and frameworks, including being respectful of all community members, having high-quality documentation, following semantic versioning, being transparent about releases and security fixes, and providing migration guides for breaking changes. It also recommends having opinions but flexibility in code generation and conventions, future-proofing APIs, and learning from mistakes in an open and rewarding process.
Voor het maken van single page web applications lijkt MVC met databinding de standaard. Daarmee zijn fouten lastig te achterhalen. Facebook ondervond dat ook en koos voor een functionele aanpak: ReactJS. Deze sessie geeft een introductie, gaat dieper in op ogenschijnlijke snelheid nadelen en laat zien hoe je herbruikbare React componenten bouwt. Tevens zal ASP.NET MVC gebruikt worden voor server side rendering van de initiële state, ideaal voor search engines die meestal een probleem hebben met single page apps. Na deze sessie zul je nooit meer hetzelfde denken over web UI’s.
The document discusses corporate governance and accountability. It provides an overview of a lecture on this topic, including a discussion on governance and accountability, corporate social responsibility and accounting, and a case presentation on AIG. The lecture aims to critically review studies on the impact of corporate social responsibility on firm value. It also describes CSR indices and evaluates their usefulness.
This document summarizes a presentation on analyzing the scalability of a Media Aware Network Element (MANE). The MANE acts as an edge router to identify media traffic and enforce service level agreements. It was implemented using Click modular router on Linux with minimal overhead. Experiments showed forwarding performance was similar to standard Linux while supporting quality of service policies. Future work includes improving classification and multicast support to further optimize scalability.
The document provides an overview of workflow management systems and introduces the Workflow Management Coalition's Workflow Reference Model. It defines key terms like workflow, workflow management systems, and process definition. It describes the main functions of workflow systems as build-time functions to define processes, and run-time functions to control process instances and enable interaction with users and applications. The reference model identifies potential areas for standardization, including process definitions and application programming interfaces, to enable interoperability between heterogeneous workflow products and integration with other IT services.
On the Diversity of the Accountability Problem. Machine Learning and Knowing ...Bernhard Rieder
This document discusses the accountability problem with machine learning algorithms. It notes that there are two types of algorithms - those explicitly coded and those that learn statistical patterns in data. These latter types can be difficult to assess and shift the focus from normative values to empirical patterns in data. It also discusses how algorithms can learn sensitive personal attributes from innocuous Facebook likes and how risk algorithms associate many data points with loan default risk. The document argues that accountability is not enough and that regulation will need to be domain-specific while exploring approaches like consumer protections and data restrictions. It concludes that algorithms reflect societal structures and turning this into profit always raises normative issues requiring attention to commercial influences and consideration of more egalitarian alternatives.
This document discusses key considerations for implementing a successful sales promotion campaign, including:
1) Estimating budgets by calculating opportunity to apply (OTA), redemption rates, and costs per pack. Getting the budget wrong can be risky.
2) Developing a structured planning process using SOSTAC (Situation, Objectives, Strategy, Tactics, Action, Control) to set KPIs, potential solutions, and operational plans.
3) Understanding important legal aspects like the UK Advertising Codes, ensuring promotions are legal, decent, honest and don't mislead or take advantage of children. Regulations vary significantly in other countries.
This document discusses management control systems. It covers control processes that monitor activities to ensure they are accomplished as planned and correct deviations. It also discusses approaches to control like market, bureaucratic and clan systems. Types of control involve measuring actual performance against standards. Categories of control systems include diagnostic, boundary and personal/interactive controls.
The document discusses balancing the workload between two production lines - an assembly line and a testing/packaging line - for two digital imaging printer models, DI-910 and DI-950. It notes that the DI-910 takes 3 minutes for assembly but 4 minutes for testing, while the DI-950 takes 6 minutes for assembly but only 2 minutes for testing. The optimal solution is to produce 80 units of the DI-950 per day to balance the 480 total minutes of available time between the two lines.
The document proposes a new workflow process to improve team effectiveness at a forensic hospital. It identifies issues with the current process such as lack of communication, documentation, and oversight. The proposed process establishes a small governance committee and scorecard system to provide clear ownership, transparency, and continuous process improvement. It includes deployment timelines and templates to standardize documentation and reduce duplication when implementing the new workflow.
Distributed Systems: scalability and high availabilityRenato Lucindo
Distributed systems use multiple computers that interact over a network to achieve common goals like scalability and high availability. They work to handle increasing loads by either scaling up individual nodes or scaling out by adding more nodes. However, distributed systems face challenges in maintaining consistency, availability, and partition tolerance as defined by the CAP theorem. Techniques like caching, queues, logging, and understanding failure modes can help address these challenges.
A final objective for sales promotion is to enhance or support the integrated marketing communications effort for a brand or company. While building or maintaining brand equity was traditionally viewed as something that was done through media advertising, it has also become an important goal for marketers as they develop their sales promotion programs.
A very successful talk where in I discuss the top 10 failures of organizations I have personally experienced when trying to scale. More than just performance!
The document discusses best practices for scalability and performance when developing PHP applications. Some key points include profiling and optimizing early, cooperating between development and operations teams, testing on production-like data, caching frequently accessed data, avoiding overuse of hard-to-scale resources, and using compiler caching and query optimization. Decoupling applications, caching, data federation, and replication are also presented as techniques for improving scalability.
30 Skills to Master to Become a Senior Software EngineerSean Coates
The document discusses 30 skills that software engineers should master to become senior engineers, including skills with programming languages like PHP, databases, SQL, HTML, CSS, JavaScript frameworks, build tools like Gulp, version control with Git, server-side frameworks like Laravel, object-relational mappers, and using database seeding and migrations. It emphasizes the importance of being well-rounded and having experience with both front-end and back-end technologies as well as tools that improve productivity and maintainability. Mastering these skills can lead to higher salaries, more leadership opportunities, and building more robust applications.
Scaling PHP Applications with Zend PlatformShahar Evron
Zend Platform provides tools to help PHP applications scale. It includes PHP Intelligence for application monitoring, performance features like job queues and caching, and session clustering to share session data across multiple servers. It offers comprehensive and integrated solutions to common problems in scaling PHP applications.
The Guide to becoming a full stack developer in 2018Amit Ashwini
This document provides a guide for becoming a full-stack developer in 2018. It outlines 8 key skills needed: 1) HTML/CSS, 2) JavaScript, 3) a back-end language like Node.js, Ruby, Python, or PHP, 4) databases and web storage, 5) HTTP and REST, 6) web application architecture, 7) Git, and 8) basic algorithms and data structures. For each skill, it provides details on important concepts and tools to learn. The goal is to learn both front-end skills like HTML/CSS and back-end skills like databases, APIs, and server-side programming in order to build complete web applications.
Tony Bibbs presented on frameworks for PHP development. He discussed when frameworks should and should not be used, common risks of frameworks, and typical framework components like MVC, ORM, templates. His key recommendation was to only change one component of a framework at a time through incremental improvements.
This document summarizes techniques for building scalable websites with Perl, including caching whole pages, chunks of HTML/data, and using job queuing. Caching helps performance by reducing workload and scalability by lowering database load. Large sites like Yahoo cache aggressively. Job queuing prevents overloading resources and keeps websites responsive under high demand by lining requests up in a queue.
The document discusses the pros and cons of using open source software in projects. It notes that open source code comes with various licenses like GPL, BSD, and MIT that differ in how they can be used. While open source lacks perceived accountability, it actually has governance structures. The document aims to provide context on open source licensing and use within the scope of incorporating external code into a project. It addresses common concerns about open source like licensing complexity but clarifies the intent is to protect author rights, not hinder code use.
PHP – Faster And Cheaper. Scale Vertically with IBM iSam Hennessy
The only way to scale your PHP application is horizontally? If you believe that then you could be missing a huge opportunity. This talk will layout why scaling vertically with the Power System platform can be a superior alternative to a traditional LAMP stack. With simplify development, reduce operation costs and a true enterprise quality database
The document provides tips for building a scalable and high-performance website, including using caching, load balancing, and monitoring. It discusses horizontal and vertical scalability, and recommends planning, testing, and version control. Specific techniques mentioned include static content caching, Memcached, and the YSlow performance tool.
Aspect oriented programming (AOP) allows developers to separate cross-cutting concerns from the main application code. This helps keep code organized and focused on single responsibilities. AOP works by defining points in the program execution, called join points, where additional behavior can be inserted. This additional behavior is defined through advice that runs before, after, or around join points. Pointcuts are used to identify which join points specific advice should apply to. Aspects group advice and pointcuts to encapsulate a concern.
Stream SQL eventflow visual programming for real programmers presentationstreambase
Richard Tibbetts, CTO, StreamBase Systems.
StreamSQL EventFlow is one of the most popular languages for Complex Event Processing (CEP), a data management paradigm for real-time applications. Based on a stream-relational data model common to other CEP languages, EventFlow is unique in that it is a visual language. This talk will focus on the design of visual representations for key features including event dispatch, modularity, data parallelism, polymorphism, and dependency injection, and on the co-development of an Eclipse-based IDE along with a new programming language. StreamSQL EventFlow is the primary programming language for the StreamBase Event Processing Platform.
Complex Event Processing platforms are used to process large volumes of event-oriented data in real-time, often in latency-critical applications such as securities trading. Combining clustering, messaging, queuing, data storage, and application logic into one system minimizes latency and gives the programmer control over all aspects of the application.
StreamSQL EventFlow is an executable visual language for building CEP applications, unlike visual environments designed for non-developers, or architecture-focused modeling tools. The talk will cover experiences overcoming prejudice against visual programming languages, and how critical development tools are to that process. We will also discuss some details of the implementation including the compiler, a visual debugger, and diff/merge functionality.
This document summarizes a presentation about PHP development best practices including deployment strategies, unit testing, and techniques for building scalable applications. The presentation discusses using PEAR, OS packages, source control, or rsync for deployment. It also covers writing unit tests, characteristics of queueing and scalable computing, and considerations for building applications that can scale. The presenter encourages attending ZendCon to learn more about these topics.
2019 StartIT - Boosting your performance with BlackfireMarko Mitranić
A workshop held in StartIT as part of Catena Media learning sessions.
We aim to dispel the notion that large PHP applications tend to be sluggish, resource-intensive and slow compared to what the likes of Python, Erlang or even Node can do. The issue is not with optimising PHP internals - it's the lack of proper introspection tools and getting them into our every day workflow that counts! In this workshop we will talk about our struggles with whipping PHP Applications into shape, as well as work together on some of the more interesting examples of CPU or IO drain.
UnConference for Georgia Southern Computer Science March 31, 2015Christopher Curtin
I presented to the Georgia Southern Computer Science ACM group. Rather than one topic for 90 minutes, I decided to do an UnConference. I presented them a list of 8-9 topics, let them vote on what to talk about, then repeated.
Each presentation was ~8 minutes, (Except Career) and was by no means an attempt to explain the full concept or technology. Only to wake up their interest.
So You Just Inherited a $Legacy Application… NomadPHP July 2016Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful “LEGACY” word to ring in your head. HAVE NO FEAR! I’ll share the techniques I’ve learned after working on several legacy codebases to help update that old code to the current PHP generation. We’ll cover triaging the old code base, writing tests to make sure you don’t break anything, and how to modernize your old code base!
So You Just Inherited a $Legacy Application...Joe Ferguson
You were just handed the keys to a new repo. Your first glance over the code base causes the fearful "LEGACY" word to ring in your head. HAVE NO FEAR! I'll share the techniques I've learned after working on several legacy codebases to help update that old code to the current PHP generation. We'll cover triaging the old code base, writing tests to make sure you don't break anything, and how to modernize your old code base!
This presentation is about System administration with automation , it includes information about System administration and how automation can be used to progress and become efficient without human assistance.
ZF2 Modules: Events, Services, and of course, modularityJohn Coggeshall
A presentation I gave at php[world], 2015 in Washington, DC on Zend Framework 2 focusing on the EventManager, ServiceManager, and how to build dependent-free modules for your applications
The document discusses using Vagrant and Puppet to create virtual machine environments for development. Vagrant allows defining and provisioning VMs through a Vagrantfile, while Puppet can further configure the VMs by installing software and configuring settings. Benefits include keeping development environments isolated, easy setup for new developers, and ability to deploy VMs to cloud providers like AWS. The key steps are downloading Vagrant and VirtualBox, defining the Vagrantfile, writing Puppet manifests, and running vagrant up to launch and provision the VM.
The document is an introduction to the Zend Framework 2 (ZF2) architecture. It discusses key ZF2 concepts like modules, the model-view-controller pattern, routes, controllers, and the service manager. Modules are a core concept, with everything including applications being modules. The service manager handles application dependencies and allows for decoupled development. Routes map URLs to controllers and actions. Controllers are executed from dispatched routes and return responses or view models.
John Coggeshall has 18 years of experience in web development and PHP. He discusses several projects that failed due to neglecting technical debt, overcomplicating projects, and ignoring expert advice. Some key lessons are to have expert skills as partners rather than employees, manage expectations, be flexible, have a development process, and keep things simple.
The rise of virtualization has transformed the server business, but other than that it seems like the developer world has largely been left behind. Regardless of if you are working on one project, or have 20 clients, every developer should know how to use virtualization to create seamless and easy to manage development environments. In this talk we will take a practical approach to using a combination of Puppet, Vagrant, and VirtualBox to create entire development environments in a matter of moments - and even better re-use that template for any project you have in the future in a version-controlled and easily managed manner. Bringing on a new developer for your project? We'll show you how they can get a full-fledged development environment from zero to working in under 10 minutes.
My talk given at Confoo, 2011 in Montreal, Quebec on using the Puppet client/server deployment tool for complex web application deployments. This is an introduction talk, and introduces everything you'll need to get started.
This is a talk I gave at PHP Quebec 2009 on building Android applications with PHP back-ends. Posted for completeness, the majority of this talk was buried in Android/Java and PHP code.. That said, there are still some useful things in the slides themselves to share.
The document discusses building rich internet applications (RIAs) using Adobe Flex and AIR with a PHP/Zend Framework backend. It describes a project to modernize a legacy DOS-based dealer management system (DMS) by creating an internet-based version that provides data sharing and analytics capabilities. Flex and AIR were chosen for the user interface to provide a desktop-like experience, while PHP/Zend Framework handles the backend functionality. Challenges included a lack of server push capabilities and no hardware support in AIR. These issues were addressed through custom data transfer code and a Java server (Merapi) that could communicate with hardware devices.
A brief keynote I gave at PHP Quebec regarding the shift away from the browser for applications and the potential impacts it will have on our development needs as an industry
These are the slides from my ZendCon 2007 talk on a project we did in Professional Services to basically rebuild from scratch InTicketing's (TicketMaster competitor) e-commerce engine using Zend technologies. It was very well received (not even standing room) and well worth a look!
The document provides an introduction to PHP security basics. It discusses identifying principals (the targets of attackers like private data), understanding common attack vectors like SQL injection and cross-site scripting, and employing defense in depth with overlapping security tactics to protect against multiple attack vectors. The presentation emphasizes understanding what information an attacker could derive from an application in order to better protect principal data and functions.
A three hour tutorial I gave at PHP Quebec on the challenges, theory, and concepts behind making asynchronous JavaScript calls for Web 2.0 Applications using PHP
Sustainability requires ingenuity and stewardship. Did you know Pigging Solutions pigging systems help you achieve your sustainable manufacturing goals AND provide rapid return on investment.
How? Our systems recover over 99% of product in transfer piping. Recovering trapped product from transfer lines that would otherwise become flush-waste, means you can increase batch yields and eliminate flush waste. From raw materials to finished product, if you can pump it, we can pig it.
An invited talk given by Mark Billinghurst on Research Directions for Cross Reality Interfaces. This was given on July 2nd 2024 as part of the 2024 Summer School on Cross Reality in Hagenberg, Austria (July 1st - 7th)
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Bert Blevins
Today’s digitally connected world presents a wide range of security challenges for enterprises. Insider security threats are particularly noteworthy because they have the potential to cause significant harm. Unlike external threats, insider risks originate from within the company, making them more subtle and challenging to identify. This blog aims to provide a comprehensive understanding of insider security threats, including their types, examples, effects, and mitigation techniques.
Kief Morris rethinks the infrastructure code delivery lifecycle, advocating for a shift towards composable infrastructure systems. We should shift to designing around deployable components rather than code modules, use more useful levels of abstraction, and drive design and deployment from applications rather than bottom-up, monolithic architecture and delivery.
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfNeo4j
Presented at Gartner Data & Analytics, London Maty 2024. BT Group has used the Neo4j Graph Database to enable impressive digital transformation programs over the last 6 years. By re-imagining their operational support systems to adopt self-serve and data lead principles they have substantially reduced the number of applications and complexity of their operations. The result has been a substantial reduction in risk and costs while improving time to value, innovation, and process automation. Join this session to hear their story, the lessons they learned along the way and how their future innovation plans include the exploration of uses of EKG + Generative AI.
Measuring the Impact of Network Latency at TwitterScyllaDB
Widya Salim and Victor Ma will outline the causal impact analysis, framework, and key learnings used to quantify the impact of reducing Twitter's network latency.
Blockchain technology is transforming industries and reshaping the way we conduct business, manage data, and secure transactions. Whether you're new to blockchain or looking to deepen your knowledge, our guidebook, "Blockchain for Dummies", is your ultimate resource.
Comparison Table of DiskWarrior Alternatives.pdfAndrey Yasko
To help you choose the best DiskWarrior alternative, we've compiled a comparison table summarizing the features, pros, cons, and pricing of six alternatives.
Are you interested in dipping your toes in the cloud native observability waters, but as an engineer you are not sure where to get started with tracing problems through your microservices and application landscapes on Kubernetes? Then this is the session for you, where we take you on your first steps in an active open-source project that offers a buffet of languages, challenges, and opportunities for getting started with telemetry data.
The project is called openTelemetry, but before diving into the specifics, we’ll start with de-mystifying key concepts and terms such as observability, telemetry, instrumentation, cardinality, percentile to lay a foundation. After understanding the nuts and bolts of observability and distributed traces, we’ll explore the openTelemetry community; its Special Interest Groups (SIGs), repositories, and how to become not only an end-user, but possibly a contributor.We will wrap up with an overview of the components in this project, such as the Collector, the OpenTelemetry protocol (OTLP), its APIs, and its SDKs.
Attendees will leave with an understanding of key observability concepts, become grounded in distributed tracing terminology, be aware of the components of openTelemetry, and know how to take their first steps to an open-source contribution!
Key Takeaways: Open source, vendor neutral instrumentation is an exciting new reality as the industry standardizes on openTelemetry for observability. OpenTelemetry is on a mission to enable effective observability by making high-quality, portable telemetry ubiquitous. The world of observability and monitoring today has a steep learning curve and in order to achieve ubiquity, the project would benefit from growing our contributor community.
Mitigating the Impact of State Management in Cloud Stream Processing SystemsScyllaDB
Stream processing is a crucial component of modern data infrastructure, but constructing an efficient and scalable stream processing system can be challenging. Decoupling compute and storage architecture has emerged as an effective solution to these challenges, but it can introduce high latency issues, especially when dealing with complex continuous queries that necessitate managing extra-large internal states.
In this talk, we focus on addressing the high latency issues associated with S3 storage in stream processing systems that employ a decoupled compute and storage architecture. We delve into the root causes of latency in this context and explore various techniques to minimize the impact of S3 latency on stream processing performance. Our proposed approach is to implement a tiered storage mechanism that leverages a blend of high-performance and low-cost storage tiers to reduce data movement between the compute and storage layers while maintaining efficient processing.
Throughout the talk, we will present experimental results that demonstrate the effectiveness of our approach in mitigating the impact of S3 latency on stream processing. By the end of the talk, attendees will have gained insights into how to optimize their stream processing systems for reduced latency and improved cost-efficiency.
Quality Patents: Patents That Stand the Test of TimeAurora Consulting
Is your patent a vanity piece of paper for your office wall? Or is it a reliable, defendable, assertable, property right? The difference is often quality.
Is your patent simply a transactional cost and a large pile of legal bills for your startup? Or is it a leverageable asset worthy of attracting precious investment dollars, worth its cost in multiples of valuation? The difference is often quality.
Is your patent application only good enough to get through the examination process? Or has it been crafted to stand the tests of time and varied audiences if you later need to assert that document against an infringer, find yourself litigating with it in an Article 3 Court at the hands of a judge and jury, God forbid, end up having to defend its validity at the PTAB, or even needing to use it to block pirated imports at the International Trade Commission? The difference is often quality.
Quality will be our focus for a good chunk of the remainder of this season. What goes into a quality patent, and where possible, how do you get it without breaking the bank?
** Episode Overview **
In this first episode of our quality series, Kristen Hansen and the panel discuss:
⦿ What do we mean when we say patent quality?
⦿ Why is patent quality important?
⦿ How to balance quality and budget
⦿ The importance of searching, continuations, and draftsperson domain expertise
⦿ Very practical tips, tricks, examples, and Kristen’s Musts for drafting quality applications
https://www.aurorapatents.com/patently-strategic-podcast.html
Best Practices for Effectively Running dbt in Airflow.pdfTatiana Al-Chueyr
As a popular open-source library for analytics engineering, dbt is often used in combination with Airflow. Orchestrating and executing dbt models as DAGs ensures an additional layer of control over tasks, observability, and provides a reliable, scalable environment to run dbt models.
This webinar will cover a step-by-step guide to Cosmos, an open source package from Astronomer that helps you easily run your dbt Core projects as Airflow DAGs and Task Groups, all with just a few lines of code. We’ll walk through:
- Standard ways of running dbt (and when to utilize other methods)
- How Cosmos can be used to run and visualize your dbt projects in Airflow
- Common challenges and how to address them, including performance, dependency conflicts, and more
- How running dbt projects in Airflow helps with cost optimization
Webinar given on 9 July 2024
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Chris Swan
Have you noticed the OpenSSF Scorecard badges on the official Dart and Flutter repos? It's Google's way of showing that they care about security. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
You can do the same for your projects, and this presentation will show you how, with an emphasis on the unique challenges that come up when working with Dart and Flutter.
The session will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across an organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
Support en anglais diffusé lors de l'événement 100% IA organisé dans les locaux parisiens d'Iguane Solutions, le mardi 2 juillet 2024 :
- Présentation de notre plateforme IA plug and play : ses fonctionnalités avancées, telles que son interface utilisateur intuitive, son copilot puissant et des outils de monitoring performants.
- REX client : Cyril Janssens, CTO d’ easybourse, partage son expérience d’utilisation de notre plateforme IA plug & play.
Coordinate Systems in FME 101 - Webinar SlidesSafe Software
If you’ve ever had to analyze a map or GPS data, chances are you’ve encountered and even worked with coordinate systems. As historical data continually updates through GPS, understanding coordinate systems is increasingly crucial. However, not everyone knows why they exist or how to effectively use them for data-driven insights.
During this webinar, you’ll learn exactly what coordinate systems are and how you can use FME to maintain and transform your data’s coordinate systems in an easy-to-digest way, accurately representing the geographical space that it exists within. During this webinar, you will have the chance to:
- Enhance Your Understanding: Gain a clear overview of what coordinate systems are and their value
- Learn Practical Applications: Why we need datams and projections, plus units between coordinate systems
- Maximize with FME: Understand how FME handles coordinate systems, including a brief summary of the 3 main reprojectors
- Custom Coordinate Systems: Learn how to work with FME and coordinate systems beyond what is natively supported
- Look Ahead: Gain insights into where FME is headed with coordinate systems in the future
Don’t miss the opportunity to improve the value you receive from your coordinate system data, ultimately allowing you to streamline your data analysis and maximize your time. See you there!
2. Welcome! Who am I: John Coggeshall Team Lead for Pro Services, Zend Technologies Author PHP 5 Unleashed Zend Educational Advisory Board Speaker on PHP-related topics worldwide Geek
3. What is Scalability? Define: Scalability The ability and flexibility of an application to meet growth requirements of an organization More then making a site go fast(er) Scalability in human resources, for example The “fastest” approach isn’t always the most scalable OO is slower, but more scalable from a code maintenance and reuse standpoint Failure to consider future needs during architectural stages leading to failure of the application’s API to scale
4. The secret to scalability is the ability to design, code, and maintain your applications using the same process again and again regardless of size
5. Foundation “ Scalability marginally impacts procedure, procedure grossly impacts scalability” - Theo Schlossnagle
6. You have to plan Performance and resource scalability requires forethought and process Version Control Performance Goals Metric measuring Development Mailing Lists API documentation Awareness is key Think about these problems and how you will solve them as your project gets off the ground
7. Development Infrastructure Every time a client has been in real trouble, they consistently fail to have a development infrastructure More then just CVS (although that’s a good start) Establishing a development release process early-on is critical to the overall stability of your apps Things will go wrong at 3am in production You need a process to release code to prevent the very-tempting cowboy-coding
8. Development Infrastructure Maintaining an existing code base is often the most costly endeavor of any application As an application grows, the complexity of it’s release process must scale Testing becomes more and more important Your release process must be able to scale with your application! Staging environments Coding Standards
9. Release Process The Cornerstone of a manageable application is a real release process Version Control Tagging of releases Atomic File Synchronization KISS: Rsync is your friend Find a Release Manager Only one entity should be able to put code in production The PHP Project has one release manager per version
10. Designing without Scalability If your application does not perform it will likely not succeed What does it mean to perform? 10 requests/sec? 100 requests/sec? 1000 requests/sec? If you don’t know what it will take to meet your performance requirements, you probably won’t meet them. “ If you're very lucky, performance problems can be fixed after the fact. But, as often as not, it will take a great deal of effort to get your code to where it needs to be for acceptable performance. This is a very bad trap to fall into. At its worst, you'll be faced with a memorable and sometimes job-ending quote: 'This will never work. You're going to have to start all over.'" Rico Mariani, Architect, Microsoft
11. Performance Metrics Response Time How long does it take for the server to respond to the request? Resource usage CPU, memory, disk I/O, Network I/O Throughput Requests / second Probably the most useful number to keep track of
12. Proactive vs. Reactive Common Scenario: Reactive Write your app Deploy it Watch it blow up Try to fix it If you’re lucky, you might succeed “enough” If you’re unlucky….. Correct Approach: Proactive Know your performance goals up front and make sure your application is living up to them as part of the development process
13. Everyone has a role in Performance Architects: Balance performance against other application needs Interoperability Security Maintainability Developers: You need to know how to measure and how to optimize to meet the goals Web-stress tools, profilers, etc. Testers: You must be able to validate the application will perform to specification
14. Designing with Scalability When designing your application, you should assume it needs to scale Quick and dirty prototypes often are exactly what gets to production It’s easy to make sure your applications have a decent chance of scaling MySQL: Design assuming someday you’ll need master/server replication, for example Don’t write an application you’ll need three years from now, write an application you need today Just think about what you might need in three years
16. Network file systems Problem: We have a server farm of 10 servers and we need to deploy our code base Very common problem Many people look to a technology like NFS Share one code base At least 90% of the time, this is a bad idea NFS/GFS is really slow NFS/GFS has tons of locking issues
17. Network file systems So how do we deploy our code base? You should always deploy your code base locally on the machine serving it Rsync is your friend What about run-time updates? Accepting File uploads Need to be available to all servers simultaneously Solutions vary depending on needs NFS may be an option for this small portion of the site Database is also an option
18. I/O Buffers I/O Buffers are there for a reason, to make things faster Sending 4098 bytes of data to the user when your system write blocks are 4096 bytes is stupid In PHP you can solve this using output buffering At the system level you can also boost up your TCP buffer size Almost always a good idea, most distributions are very conservative here Just be mindful of the amount of RAM you actually have
19. Ram Disks Ram Disks are a very nice way to improve performance of an application, as long as you have a lot of memory laying around Use Ramdisks to store any sort of data you wouldn’t care if you lost when the 16 year old trips over the power cable A reasonable alternative to shared memory
22. Configuring PHP for Speed register_globals = off auto_globals_jit = on magic_quotes_gpc = off expose_php = off register_argc_argv = off always_populate_raw_post_data = off session.use_trans_sid = off session.auto_start = off session.gc_divisor = 10000 output_buffering = 4096
23. Blocking calls Blocking I/O can always be a problem in an application I.e. attempting to open a remote URL from within your PHP scripts If the resource is locked / slow / unavailable your script hangs while we wait for a timeout Might as well try to scale an application that has a sleep(30) in it Very bad
24. Blocking calls Solutions Don’t use blocking calls in your application Don’t use blocking calls in the heavy-load aspects of your application Have out-of-process scripts responsible for pulling down data
25. Failing to Cache Caching is one of the most important things you can do when writing a scalable application A lot of people don’t realize how much they can cache Rarely is a 5 second cache of any data going to affect user experience Yet it will have significant performance impact 1 data / 2 queries per request 2 queries * 200 request / sec = 400 queries / second 400 queries * 5 seconds = 2000 queries you didn’t do
26. Failing to Cache Improving the speed of PHP can be done very easily using an op-code cache PHP 6 will have this ability built-in to the engine
27. Semi-Static Caching If you're web application has a lot of semi-static content Content that could change so it has to be stored in the DB, but almost never does .. And you're running on Apache This Design Pattern is killer!
28. Semi-Static Caching Most people in PHP would implement a page like this: http://www.example.com/show_article.php?id=5 This would be responsible for generating the semi-static page HTML for the browser
29. Semi-Static Caching Instead of generating the HTML for the browser, make this script generate another PHP script that contains mostly static content Keep things like personalization code, but make the actual article itself static in the file Write the file to disk in a public folder under document root
30. Semi-Static Caching If you put them in this directory http://www.example.com/articles/5.php You can create a mod_rewrite rule such that http://www.example.com/articles/5.php maps to http://www.example.com/show_article.php?id=5 Since show_article.php writes articles to files, once it's been generated no more DB reads!
31. Semi-Static Caching Simple and Elegant Solution Allows you to keep pages “personalized” Very easy to Maintain
33. Poor database design Database design is almost always the most important thing in your application PHP can be used completely properly, but if you mess up the database you’re hosed anyway Take the time to really think about your design Read books on designing relational databases Understand how Indexes work, and use them
34. Poor database design For example.. Using MySQL MyISAM tables all the time Use InnoDB instead if you can Use MyISAM tables only if you plan on doing fulltext searching Even then, they shouldn’t be primary tables
35. Improperly dealing with database connections Improperly using persistent database connections Know your database, MySQL has a relatively light handshake process compared to Oracle Using PHP to deal with database fail over It’s not PHP’s Job, don’t do it. Design your PHP applications to work with hostname aliases instead of real addresses i.e. mysql-r, mysql-w Have external processes responsible for switching the /etc/hosts file in the event something blows up
36. Let me say that again… I DON’T CARE WHAT IT SAYS IN SOME BOOK, DO NOT USE PHP TO DETERMINE WHICH DATABASE TO CONNECT TO
37. Database connections Bad: Code to determine if it is the dev environment or not and a different database is selected in each case Suicidal: Code to determine if the primary master in a MySQL database is down, and instead attempt to seamlessly roll-over to a hot swap MySQL slave you bless as master These don’t work These aren’t PHP’s Job what so ever These will someday land you on CNN for incompetence
38. Having your Cake and Eating it too For those of us using MySQL, here’s a great replication trick from our friends at flickr InnoDB is under most circumstances considerably faster then MyISAM MyISAM is considerably better suited for full-text searches Trick: During a master/slave replication, the slave table type can change Set up a separate MyISAM fulltext search farm Connect to those servers when performing full-text searches
39.
40. SQLite, Huh? SQLite is a great database package for PHP that can really speed certain things up Requires you understanding when and how to use it. SQLite is basically a flat-file embedded database Crazy-fast reads, horrible writes (full database locks) Answer: SQLite is a *great* lookup database
41. SQL Security Those who do not use Prepared statements should be flogged with a rubber hose They are Faster Easier to maintain Considerably more secure ALL database write operations should be done through prepared statements, Period.
43. Know your Web Server When designing an application, it’s very important that you understand how PHP works in the bigger picture Know how PHP interacts and responds to your web server For instance – How’s PHP really work with Apache 1.3.x? 2.2.x?
44. Know your Web server Apache 1.3.x works on a pre-fork model One parent process spawns a whole lot of child processes Each process handles a single HTTP request at a time May handle a finite or infinite number of requests before being destroyed PHP exists in the context of an Apache Child process This means this like “persistent” resources are only persistent to the individual child process Database connections total = Process total
45. Hanging up Apache When scaling an application, requests per second is key You should have an idea how long a single request will take You should know how many of those requests your server farm can handle at once without dying You should know you’re requests-per-second figures Too often, people let Apache handle things that it really shouldn’t I.e. Large file downloads, etc.
46. Dynamic vs Static serving When Apache is sending a 10 megabyte file, that means that one of your HTTP children is wasting it’s time shuffling data down the pipe This is definitely something that can be handled by something else A different HTTP server (tHttpd) Zend Download Server At any given point in time, you should try to design thing so that your primary server function (serving PHP scripts) is the only thing being done by Apache
47. Dynamic vs Static serving On the same note, you can use something like thttpd to serve all static content Set up a subdomain static.example.com Put all of your images, flash files, javascript libs, stylesheets, etc. on that server
48. Apache Configuration AllowOverride None FollowSymLinks No ExtendedStatus No Use IPs instead of Hostnames for allow,deny Disable HostnameLookups
49. Keepalive Requests Keepalive sounds great on paper It can actually totally hose you if you aren’t careful Use Keepalive if: You use the same server for static/dynamic content You intelligently know how to set the timeout No Keepalive request should last more then 10 seconds Configure your server appropriately If Apache is 100% Dynamic TURN IT OFF
51. Knowing where to Not optimize Sooner or later, you will worry about scalability Hopefully, you didn’t start after your application started blowing up When trying to make scalability decisions knowledge is the most important thing you can have PHP has both closed source and open source profilers which do an excellent job of identifying the bottlenecks in your application Optimize where it counts
52. Instrumentation of your applications is key to determining what matters most when optimizing If you’re not logging, you’re shooting in the dark White-box monitoring of your applications via tools like Zend Platform are enormously helpful in understanding what is going on You can’t make good process (or business) decisions unless you understand how your web site is being used and by whom. Knowing where to Not optimize
53. Amdahl’s Law: Improving code execution time by 50% when the code executes only 2% of the time will result in a 1% overall improvement Improving code execution time by 10% when the code executes 80% of the time will result in a 8% overall improvement Knowing where to Not optimize
54. Use Profilers Profilers are easy to use Profilers draw pretty pictures Profilers are good, use profilers
55. How a Profiler/Debugger works in PHP Profiler / Debuggers in PHP work remotely against the web server
56. Tips on using a profiler When doing real performance analysis, here are a few tips to help you out: Copy the raw data (function execution times) into a spreadsheet and do analysis from there Most profilers provide at least two execution figures per function call The amount of time spent executing PHP code The amount of time PHP spent internally That means total = A + B If you are spending a lot more time inside of PHP, you’ve got a blocking issue somewhere
57. Something More.. Do not mistake something more for something better Dev: “Hey, let’s build this great ORM that automatically generates it’s views like Ruby!” Manager: “Sounds great, go to it” <4 months pass> Dev: “Here’s my two weeks notice, I quit” Manager: “Okay John you write it” John: “Um, I have no idea what this guy did” <2 months pass to re-write the module in a way that we can maintain it>
58. Something More.. Don’t use a sledge hammer when a tack hammer will do Devs: Just because your boss doesn’t know the difference doesn’t make it a good idea It might seem like great job security to write code only you can maintain, but in reality all it will do is get you fired faster when they figure it out Managers: Know enough about the technologies to keep eager developers from leaving you holding the bag.
59. Binary Optimization If you can, building architecture-specific builds of all of your technology stack is a good idea Build Options: -O3 –march, -mcpu, -msse, -mmmx – mfpmath=sse, -funroll-loops Stripping binaries using the ‘strip’ utility can also significantly reduce the memory footprint of the application Also, Most PHP extension aren’t used by PHP scripts Compile high-use ones statically into PHP and provide the rest as shared libs Only load the shared extensions when they are needed
60. Binary Optimization One drawback to Binary Optimization It’s optimized for that platform It’s significantly more annoying to try to manage different PHP versions all built on different hardware And then manage the underlying libraries which power PHP Don’t forget to optimize shared extensions too
61. Static compiling If running PHP in Apache you can increase the speed in some cases by 30% just by compiling PHP statically within Apache Of course, this increases the footprint of Apache, and each of it’s children (in prefork)
62. AJAX - Just because I haven’t used many buzzwords in my slides yet Let’s imagine that each request sent over the wire is like a car driving from point A (the client) to point B (the server) Roads are Networks AJAX Latency
68. One of the biggest problems with AJAX The problem with AJAX has to do with multiple dependent asynchronous requests You can’t rely on any order of operations in classical AJAX models
73. Some requests will happen faster When working with AJAX, always know you cannot rely on one request finishing before the next is triggered Requests can take different lengths of time based on a huge array of factors Server load and Network load come to mind Can really mess up your application Bad news: None of the current AJAX toolkits account for this latency
74. Developing with Latency in mind A number of tools exist for developing AJAX applications with latency in mind AJAX Proxy is a good example http://ajaxblog.com/archives/2005/08/08/ajax-proxy-02 Allows you to simulate latency in your requests You can use it in conjunction with “SwitchProxy” to point your browser at a different proxy server to use it http://www.roundtwo.com/product/switchproxy Not a true solution, but at least let’s you test for the problem.
75. Final Thoughts Final Thoughts Ultimately the secret of scalability is developing applications and procedures which scale both UP AND DOWN You have to be able to afford to make the application to begin with You have to be able to afford to make the application ten times bigger then it is Without process, you will fail. REMEMBER: In ANY application, there is only ever one bottleneck Questions?