Pro PHP Refactoring
Author: Francesco Trucchia, Jacopo Romei
Many businesses and organizations depend on older high-value PHP software that risks abandonment because it is impossible to maintain. The reasons for this may be that the software is not well designed; there is only one developer (the one who created the system) who can develop it because he didn’t use common design patterns and documentation; or the code is procedural, not object-oriented. With this book, you’ll learn to identify problem code and refactor it to create more effective applications using test-driven design.
Pro PHP Programming
Author: Mladen Gogala, Peter MacIntyre, Adam MacDonald, Brian Danchilla
If you are a web programmer, you need to know modern PHP. This book presents with many new areas in which PHP plays a large role. If you want to write a mobile application using geo-location data, Pro PHP Programming will show you how. Additionally, if you need to make sure that you can write a multilingual indexing application using Sphinx, this book will help you avoid the pitfalls. Of course, Pro PHP Programming gives a thorough survey of PHP post-5.3. You'll begin by working through an informative survey and clear guide to object-oriented PHP. Then, you'll be set for the core of the book on modern PHP applications. Now, you'll be able to start with the chapter on PHP for mobile programming and move on to sampling social media applications. You'll also be guided through new PHP programming language features like closures and namespaces. Pro PHP Programming deals with filtering data from users and databases next, so you'll be well prepared for relational and NoSQL databases. Of course, you can also learn about data retrieval from other sources, like OCR libraries or websites. Then the question of how to format and present data arises, and in Pro PHP Programming, you'll find solutions via JSON, AJAX and XML.
Pro PHP Programming
Author: Mladen Gogala, Peter MacIntyre, Brian Danchilla
If you are a web programmer, you need to know modern PHP. This book presents with many new areas in which PHP plays a large role. If you want to write a mobile application using geo-location data, Pro PHP Programming will show you how. Additionally, if you need to make sure that you can write a multilingual indexing application using Sphinx, this book will help you avoid the pitfalls. Of course, Pro PHP Programming gives a thorough survey of PHP post-5.3. You'll begin by working through an informative survey and clear guide to object-oriented PHP. Then, you'll be set for the core of the book on modern PHP applications. Now, you'll be able to start with the chapter on PHP for mobile programming and move on to sampling social media applications. You'll also be guided through new PHP programming language features like closures and namespaces. Pro PHP Programming deals with filtering data from users and databases next, so you'll be well prepared for relational and NoSQL databases. Of course, you can also learn about data retrieval from other sources, like OCR libraries or websites. Then the question of how to format and present data arises, and in Pro PHP Programming, you'll find solutions via JSON, AJAX and XML. What you’ll learn PHP 5.3 object-oriented programming and new PHP features Writing programs talking to SQL-based and NoSQL-based databases alike Using modern PHP programmer's tools Writing social media applications Investigating NoSQL datastores Writing PHP programs for a cloud ecology Who this book is for This book is for intermediate and advanced PHP programmers, as well as programmers coming from other languages such as Python, Perl, C/C++. It can also be utilized by programmers with knowledge of a previous PHP version who want to return to PHP. Table of Contents Object Orientation Exceptions and References Mobile PHP Social Media Cutting Edge Form Design and Management Database Interaction I Database Interaction II Database Interaction III Libraries Security Agile Development with Zend Studio for Eclipse, Bugzilla, Mylyn, and Subversion Refactoring, Unit Testing, and Continuous Intergration XML JSON and AJAX Conclusions Regular Expressions
Pro PHP Application Performance will help you understand all the technologies and components which play a role in how well your applications run. When seconds can mean the difference between retaining a user and losing a user, it's important for all of us to have optimization as part of our project roadmap. But what components within your application should you analyze? How should you optimize? And how can you measure how well your application is performing? These are some of the questions that are answered in this book. Along the way you will also learn the "why" of optimizing. You’ll discover why you should optimize a specific component, why selecting one function over another is beneficial, and how to find and use the optimization tools available to the open source community. You’ll also learn how to deploy caching software as well as web server software. Pro PHP Application Performance will also teach you more advanced techniques, such as: • Using Xdebug to profile functions that are not running as efficiently as possible. • Comparing opcode executed by different PHP functions to narrow the search for functions that run efficiently. • Using strace to analyze Apache while your application is served to the user. Once you complete this book you will have a complete sense of where to start optimizing and, most importantly, have the tools which allow you to continue optimizing in other PHP applications going forward.
Author: Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
As the application of object technology--particularly the Java programming language--has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, "non-optimal" applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as "refactoring," these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use. . .until now. In Refactoring: Improving the Design of Existing Code, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process. With proper training a skilled system designer can take a bad design and rework it into well-designed, robust code. In this book, Martin Fowler shows you where opportunities for refactoring typically can be found, and how to go about reworking a bad design into a good one. Each refactoring step is simple--seemingly too simple to be worth doing. Refactoring may involve moving a field from one class to another, or pulling some code out of a method to turn it into its own method, or even pushing some code up or down a hierarchy. While these individual steps may seem elementary, the cumulative effect of such small changes can radically improve the design. Refactoring is a proven way to prevent software decay. In addition to discussing the various techniques of refactoring, the author provides a detailed catalog of more than seventy proven refactorings with helpful pointers that teach you when to apply them; step-by-step instructions for applying each refactoring; and an example illustrating how the refactoring works. The illustrative examples are written in Java, but the ideas are applicable to any object-oriented programming language.
Author: Evan Burchard
Publisher: "O'Reilly Media, Inc."
Software Architecture for Big Data and the Cloud is designed to be a single resource that brings together research on how software architectures can solve the challenges imposed by building big data software systems. The challenges of big data on the software architecture can relate to scale, security, integrity, performance, concurrency, parallelism, and dependability, amongst others. Big data handling requires rethinking architectural solutions to meet functional and non-functional requirements related to volume, variety and velocity. The book's editors have varied and complementary backgrounds in requirements and architecture, specifically in software architectures for cloud and big data, as well as expertise in software engineering for cloud and big data. This book brings together work across different disciplines in software engineering, including work expanded from conference tracks and workshops led by the editors. Discusses systematic and disciplined approaches to building software architectures for cloud and big data with state-of-the-art methods and techniques Presents case studies involving enterprise, business, and government service deployment of big data applications Shares guidance on theory, frameworks, methodologies, and architecture for cloud and big data
Get more out of your legacy systems: more performance, functionality, reliability, and manageability Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts. In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control. The topics covered include Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform—with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren't object-oriented Handling applications that don't seem to have any structure This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.
Author: Mukund Chaudhary, Ankur Kumar
Publisher: Packt Publishing Ltd
If you are a competent PHP developer who knows the basics of PHPStorm and intends to gain better knowledge of PHPStorm by learning and implementing pro-level practices, techniques, and solutions, then this book is for you. It is assumed that you already have a working installation of the software setup.
PHP in Action
Author: Dagfinn Reiersøl, Marcus Baker, Chris Shiflett
Publisher: Manning Publications
This book shows readers how to apply PHP techniques and principles to all themost common challenges of Web programming.
Author: Chad Pytel, Tammer Saleh
Publisher: Addison-Wesley Professional
The Complete Guide to Avoiding and Fixing Common Rails 3 Code and Design Problems As developers worldwide have adopted the powerful Ruby on Rails web framework, many have fallen victim to common mistakes that reduce code quality, performance, reliability, stability, scalability, and maintainability. Rails™ AntiPatterns identifies these widespread Rails code and design problems, explains why they’re bad and why they happen—and shows exactly what to do instead. The book is organized into concise, modular chapters—each outlines a single common AntiPattern and offers detailed, cookbook-style code solutions that were previously difficult or impossible to find. Leading Rails developers Chad Pytel and Tammer Saleh also offer specific guidance for refactoring existing bad code or design to reflect sound object-oriented principles and established Rails best practices. With their help, developers, architects, and testers can dramatically improve new and existing applications, avoid future problems, and establish superior Rails coding standards throughout their organizations. This book will help you understand, avoid, and solve problems with Model layer code, from general object-oriented programming violations to complex SQL and excessive redundancy Domain modeling, including schema and database issues such as normalization and serialization View layer tools and conventions Controller-layer code, including RESTful code Service-related APIs, including timeouts, exceptions, backgrounding, and response codes Third-party code, including plug-ins and gems Testing, from test suites to test-driven development processes Scaling and deployment Database issues, including migrations and validations System design for “graceful degradation” in the real world
Build server-side applications more efficiently—and improve your PHP programming skills in the process—by learning how to use design patterns in your code. This book shows you how to apply several object-oriented patterns through simple examples, and demonstrates many of them in full-fledged working applications. Learn how these reusable patterns help you solve complex problems, organize object-oriented code, and revise a big project by only changing small parts. With Learning PHP Design Patterns, you’ll learn how to adopt a more sophisticated programming style and dramatically reduce development time. Learn design pattern concepts, including how to select patterns to handle specific problems Get an overview of object-oriented programming concepts such as composition, encapsulation, polymorphism, and inheritance Apply creational design patterns to create pages dynamically, using a factory method instead of direct instantiation Make changes to existing objects or structure without having to change the original code, using structural design patterns Use behavioral patterns to help objects work together to perform tasks Interact with MySQL, using behavioral patterns such as Proxy and Chain of Responsibility Explore ways to use PHP’s built-in design pattern interfaces
Author: Jurgen Appelo
Publisher: Pearson Education
How software practitioners can become great Agile leaders: simple rules from real-world practice * *Succeed with Agile by mastering eight crucial leadership skills: activating people, empowering teams, aligning results, organizing structure, enforcing discipline, manipulating context, acquiring knowledge, and measuring performance. *Work more effectively with knowledge workers, while managing risk, uncertainty, and change. *The newest book in Mike Cohn's best-selling Signature Series. In Management 3.0, top Agile manager Jurgen Appelo shows managers how to lead Agile adoption and Agile projects more effectively, while also helping their colleagues develop as leaders in Agile environments. Appelo combines the 'what,' 'why,' and 'how' of agile leadership, presenting background, examples, and powerful, proven techniques. Appelo identifies the eight most crucial agile leadership skills, explaining in detail why they matter and how to develop them - both in yourself and in your colleagues. You'll discover powerful ways to activate people, empower teams, align results, organize structure, enforce discipline, manipulate context, acquire knowledge, and measure performance. Management 3.0 will help aspiring managers and leaders: * *Define their teams' boundaries and constraints, so they can self-organize more effectively. *Anticipate issues teams won't or can't resolve on their own. *Give teams the feed and caring they need, and let them grow on their own. *Sow the seeds for a culture of craftsmanship. *Successfully manage risks and uncertainty in fast-changing projects and environments.
A guide to XP leads the developer, project manager, and team leader through the software development planning process, offering real world examples and tips for reacting to changing environments quickly and efficiently.
Awareness of design smells – indicators of common design problems – helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt – further time owed to fix projects thought to be complete – and need to be addressed via proper refactoring. Refactoring for Software Design Smells presents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue. Contains a comprehensive catalog of 25 structural design smells (organized around four fundamental design principles) that contribute to technical debt in software projects Presents a unique naming scheme for smells that helps understand the cause of a smell as well as points toward its potential refactoring Includes illustrative examples that showcase the poor design practices underlying a smell and the problems that result Covers pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice Presents insightful anecdotes and case studies drawn from the trenches of real-world projects