<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Tue, 18 Jun 2013 23:43:59 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Fabien Potencier: Packing a Symfony full-stack Framework Application in one File - Introduction]]></title>
      <guid>http://www.phpdeveloper.org/news/19725</guid>
      <link>http://www.phpdeveloper.org/news/19725</link>
      <description><![CDATA[<p>
<i>Fabien Potencier</i> has a new post to his site showing how you can <a href="http://fabien.potencier.org/article/69/packing-a-symfony-full-stack-framework-application-in-one-file-introduction">package a Symfony application into one file</a>, the first part of a series. It's not "packing" like you'd think with a <a href="http://php.net/phar">phar</a>, but more of an all-in-one file setup.
</p>
<blockquote>
Sometimes, I'm wondering if I'm not just completely crazy. [...] his is yet another step toward my Quest of the PHP Holy Grail. But besides being a though challenge, there are many other reasons that makes it interesting for everyone. First, that's a good way to learn more about the Symfony internals and especially about the <a href="http://api.symfony.com/2.3/index.html">Kernel</a> class. [...] Then, I want to showcase once more the flexibility of the Symfony core framework and the decoupling between all aspects of the framework.
</blockquote>
<p>
He does talk about one more practical use - making bug reporting easier by having just one file that can reproduce the behavior you're seeing and is easy to drop in, self-contained. He issues a challenge to himself for the course of the series - is it possible to make a full-stack application in one file and in under 200 lines of code. 
</p>
Link: http://fabien.potencier.org/article/69/packing-a-symfony-full-stack-framework-application-in-one-file-introduction]]></description>
      <pubDate>Mon, 17 Jun 2013 10:49:06 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPClasses.org: Lately in PHP, Episode 36 - PHP 5.5 Release Date Imminent]]></title>
      <guid>http://www.phpdeveloper.org/news/19724</guid>
      <link>http://www.phpdeveloper.org/news/19724</link>
      <description><![CDATA[<p>
On the PHPClasses.org site <i>Manuel Lemos</i> has <a href="http://www.phpclasses.org/blog/post/209-PHP-55-Release-Date-Imminent--Lately-in-PHP-podcast-episode-36.html">posted the latest episode</a> of the "Lately in PHP" podcast series. This episode, number 36, talks about the upcoming release of PHP 5.5 and looks forward to 5.6.
</p>
<blockquote>
The PHP 5.5.0 final release is about to happen. After about 16 months of development PHP 5.5 is bringing even more maturity to the PHP language, which by Google numbers is present in 75% of the Web sites. [...] hey also discussed some new features proposed for PHP 5.6 like incremental decoding of large JSON data streams and overloading arithmetic operators for arbitrary precision math. They also debated the meaning of Google finally adding support to PHP in their cloud hosting platform Google AppEngine. Also in this episode it was discussed an article about good practices to quickly detect and fix PHP code bugs that only show up in production environments.
</blockquote>
<p>
You can listen to this latest episode either through the <a href="http://www.phpclasses.org/blog/post/209-PHP-55-Release-Date-Imminent--Lately-in-PHP-podcast-episode-36.html">in-page player</a>, by <A href="http://www.phpclasses.org/blog/post/209/file/173/name/Lately-In-PHP-36.mp3">downloading it directly</a> or you can <a href="https://www.youtube.com/watch?feature=player_embedded&v=fqCfijbZMos">watch the video</a> of the live recording</a> on YouTube.
</p>
Link: http://www.phpclasses.org/blog/post/209-PHP-55-Release-Date-Imminent--Lately-in-PHP-podcast-episode-36.html]]></description>
      <pubDate>Mon, 17 Jun 2013 09:30:38 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DZone.com: PHP Performance Crash Course, Part 1: The Basics]]></title>
      <guid>http://www.phpdeveloper.org/news/19708</guid>
      <link>http://www.phpdeveloper.org/news/19708</link>
      <description><![CDATA[<p>
In a recent post to DZone.com <i>Dustin Whittle</i> talks about performance in PHP applications and <a href="http://java.dzone.com/articles/php-performance-crash-course">gives you a crash course</a> on some of the basics around it (this is part one of a series).
</p>
<blockquote>
We all know performance is important, but performance tuning is too often an afterthought. As a result, taking on a performance tuning project for a slow application can be pretty intimidating - where do you even begin? In this series I'll tell you about the strategies and technologies that (in my experience) have been the most successful in improving PHP performance. To start off, however, we'll talk about some of the easy wins in PHP performance tuning. These are the things you can do that'll get you the most performance bang for your buck, and you should be sure you've checked off all of them before you take on any of the more complex stuff.
</blockquote>
<p>
He talks some about why performance matters and some of the more common practices to introduce immediate performance improvements into your application. His list includes things like: update PHP, use an opcode cache, use autoloading and session optimization. He also talks about using processing queues for blocking work and learning how to use code profiling tools to find the pain points.
</p>
Link: http://java.dzone.com/articles/php-performance-crash-course]]></description>
      <pubDate>Wed, 12 Jun 2013 14:56:13 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Andrew Podner: Functional Testing to Improve Quality Assurance (part 2)]]></title>
      <guid>http://www.phpdeveloper.org/news/19662</guid>
      <link>http://www.phpdeveloper.org/news/19662</link>
      <description><![CDATA[<p>
<i>Andrew Podner</i> has a posted the second part of his series looking at <a href="http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-2/">functional testing in PHP applications</a> with <a href="http://docs.seleniumhq.org/">Selenum</a>.
</p>
<blockquote>
In the first post about functional testing, we went through the basics of what functional testing is and how it complements and differs from other types of testing used for software quality assurance.  This time, I will spend some time talking about using functional testing in a practical sense to set up a testing suite for a web based software project. [...] Each of these can provide a powerful means of performing automated functional testing and you should select your tool of choice based on what works best for you.  I typically find myself using Selenium for functional testing, but again, I would encourage you to look at each available option out there and select the best fit
</blockquote>
<p>
He walks you through the installation of the Selenium Firefox plugin, some of the basics of its use and how to create and run a simple test. He also looks at a slightly more complex example - filling in a form and validating the resulting page.
</p>
Link: http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-2]]></description>
      <pubDate>Mon, 03 Jun 2013 11:57:40 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Extract Objects from an Access Database with PHP, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19661</guid>
      <link>http://www.phpdeveloper.org/news/19661</link>
      <description><![CDATA[<p>
PHPMaster.com has posted the <a href="http://phpmaster.com/extract-ole-objects-from-an-access-database-using-php-2/">second part</a> of their series covering connecting PHP to a legacy Access database. In <a href="http://phpmaster.com/extract-ole-objects-from-an-access-database-using-php-1/">part one</a> they introduced you to working with the data and how to extract the object. In this new part they look at specific file types and how to pull out their data.
</p>
<blockquote>
 In this second part we'll learn how to extract Acrobat PDF documents and take a brief look at a selection of image formats. The only similarity that PDF, GIF, PNG, etc., have when stored in an Access database is that they are all wrapped in an OLE container consisting of a variable length header and trailer. As we shall see, the trailer can be ignored as it was with the package discussed in Part 1. The header is more useful, but doesn't contain all the information we need.
</blockquote>
<p>
They get into the details of the headers for each type of object and include screenshots of what they look like in a hex viewer. The code for the complete class is included in the post, making it easy to drop in and get started with your transition from database object to external file. 
</p>
Link: http://phpmaster.com/extract-ole-objects-from-an-access-database-using-php-2]]></description>
      <pubDate>Mon, 03 Jun 2013 10:37:24 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Brandon Savage: Queuing with RabbitMQ and PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/19640</guid>
      <link>http://www.phpdeveloper.org/news/19640</link>
      <description><![CDATA[<p>
<i>Brandon Savage</i> has posted a quick overview of <a href="http://www.brandonsavage.net/queuing-with-rabbitmq-and-php">working with PHP and RabbitMQ</a> for queuing. This is the first part of a three-part series about using these two technologies together effectively.
</p>
<blockquote>
There are many times that you want to write background processes and queue up the tasks so that they can be handled in sequential order. There are any number of queues available for software developers, and one that I've really taken a liking to is RabbitMQ. Besides the fact that the queue is designed to requeue messages that are unsuccessfully delivered, RabbitMQ is fast and efficient.
</blockquote>
<p>
He introduces some of the basic concepts behind working with RabbitMQ (like connections and channels) and an "exchange" - the method by which messages are routed. He talks about pushing messages to the exchange to be handled and how you consume the queue for updates. He also links to the various things you'll need to install to start combining these two tools including <a href="http://pecl.php.net/package/amqp">the AMPQ</a> PECL extension.
</p>
Link: http://www.brandonsavage.net/queuing-with-rabbitmq-and-php]]></description>
      <pubDate>Tue, 28 May 2013 09:41:39 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Openbiz Cubi: A Robust PHP Application Framework, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19618</guid>
      <link>http://www.phpdeveloper.org/news/19618</link>
      <description><![CDATA[<p>
PHPMaster.com has posted the second part of their look at the Openbiz Cubi framework (<a href="http://phpdeveloper.org/news/19599">part one here</a>), this time focusing on the code - mostly XML - that you'll need to create your own custom module.
</p>
<blockquote>
In the first part of this series we talked about the development challenges we face and how Openbiz Cubi can help by providing a solid, ready-to-use web application framework. In this part we'll see how to build our own module and dive a bit deeper into the core architecture of the framework.
</blockquote>
<p>
They include the SQL you'll need to run to create a new table for the "Customer" module they're going to help you build. With that in place, they walk you through the command to execute to make the module skeleton, the locations of the XML files to work with and the contents of each. Included in the module are things like a data object, a module description file and the form object. He finishes up the post with a look at the overall flow of the Cubi execution so you know where each piece falls.
</p>
Link: http://phpmaster.com/openbiz-cubi-a-robust-php-application-framework-2]]></description>
      <pubDate>Wed, 22 May 2013 10:27:16 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Andrew Podner: Functional Testing to Improve Quality Assurance (part 1)]]></title>
      <guid>http://www.phpdeveloper.org/news/19605</guid>
      <link>http://www.phpdeveloper.org/news/19605</link>
      <description><![CDATA[<p>
<i>Andrew Podner</i> has posted the first part of a new series to his site today. He'll be looking at <a href="http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-1/">using functional testing to improve quality</a> of the resulting code and full application.
</p>
<blockquote>
 For this week, I wanted to focus on some different types of automated testing other than unit testing that can help developers build more robust applications and improve both the speed and effectiveness of quality assurance.  Specifically, this post is going to focus on functional testing. Functional testing is composed of the tests that you write which are from the user's point of view.  A functional test is used to perform quality assurance on all or part of an application utilizing the user interface as a pathway to the application. 
</blockquote>
<p>
He gives some examples of functional tests like clicking on buttons, trying a login, checking that the contents of the page are correct. He talks some about the purpose of functional testing and how it differs from unit testing. He suggests the metaphor of a race car - the pit crew would be the "unit testers" and the driver would be the "functional tester", saying whether or not all of the parts of the car are working together as they should for the race. In the next part of the series, he'll talk some about the actual software to automate this process.
</p>
Link: http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-1]]></description>
      <pubDate>Mon, 20 May 2013 09:19:17 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: MongoDB Indexing, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19579</guid>
      <link>http://www.phpdeveloper.org/news/19579</link>
      <description><![CDATA[<p>
PHPMaster.com has posted part two of their series looking at indexing in MongoDB databases (<a href="http://phpdeveloper.org/news/19551">part one here</a>) with some <a href="http://phpmaster.com/mongodb-indexing-2">more advanced concepts</a> Mongo makes available.
</p>
<blockquote>
In <a href="http://phpmaster.com/mongodb-indexing-1/">part 1</a> of this series we had an introduction to indexing in MongoDB. we saw how to create, use, and analyze queries with indexes giving us a good foundation to build on. In this part, we'll take a look at a few more small but important concepts, like indexing on sub-documents and embedded fields, covered queries, and index direction.
</blockquote>
<p>
They use the same "posts" collection from the previous article, showing you how to index it based on a "location" sub document and "embedded fields" inside of it. They also touch on complex sorting with a multi-field index and the idea of "covered queries." These are queries that all fields queried are part of an index as well as all returned. They finish up the article by showing you how to remove indexes too.
</p>
Link: http://phpmaster.com/mongodb-indexing-2]]></description>
      <pubDate>Mon, 13 May 2013 10:36:46 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: MongoDB Indexing, Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19551</guid>
      <link>http://www.phpdeveloper.org/news/19551</link>
      <description><![CDATA[<p>
New on PHPMaster.com is the first part of their series about <a href="http://phpmaster.com/mongodb-indexing-1/">indexing in MongoDB</a>, a method for optimizing your collections to make querying them even faster. They cover the five main types of indexes and situations where they can help.
</p>
<blockquote>
Indexing is one of the more important concepts of working with MongoDB. A proper understanding is critical because indexing can dramatically increase performance and throughput by reducing the number of full documents to be read, thereby increasing the performance of our application. Because indexes can be bit difficult to understand, this two-part series will take a closer look at them.
</blockquote>
<p>
They look at the default "_id" index, secondary, compound, multikey and multikey compound indexes. Example documents and results are included as well as some of the options that can be set on the index types to tweak performance. They finish up the article with a look at some of the limitations and considerations to think about when using indexing, including that they cannot be used with regex queries.
</p>
Link: http://phpmaster.com/mongodb-indexing-1]]></description>
      <pubDate>Mon, 06 May 2013 11:50:44 -0500</pubDate>
    </item>
  </channel>
</rss>
