<?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>Wed, 19 Jun 2013 20:08:31 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[/Dev/Hell Podcast: Episode 33: Pol Pot-level Sucks]]></title>
      <guid>http://www.phpdeveloper.org/news/19727</guid>
      <link>http://www.phpdeveloper.org/news/19727</link>
      <description><![CDATA[<p>
The /Dev/Hell podcast (hosted by PHP community members <i>Chris Hartjes</i> and <i>Ed Finkler</i>) has posted its latest episode - <a href="http://devhell.info/post/2013-06-13/pol-pot-level-sucks/">Episode #33 - Pol Pot-level Sucks</a>.
</p>
<blockquote>
Back in the saddle for the double-tres, Chris and Ed rap about the loss of trust in Google and how that affects their perception of the Go language. Then Ed babbles for way too long about vintage gaming and computing. Chris wonders how you could be truly private on the Internet in the light of widespread government surveillance. Finally, we talk about the importance of automation and repeatable processes.
</blockquote>
<p>
You can listen to this latest episode either through the <a href="http://devhell.info/post/2013-06-13/pol-pot-level-sucks/">in-page player</a> or by <a href="http://devhell.s3.amazonaws.com/ep33-64mono.mp3">downloading the mp3</a> directly.  You can also <a href="http://feeds.feedburner.com/devhell-podcast">subscribe to their feed</a> so you'll know when the latest episodes are released.
</p>
Link: http://devhell.info/post/2013-06-13/pol-pot-level-sucks]]></description>
      <pubDate>Mon, 17 Jun 2013 12:42:26 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Samantha Quinones: Why you should consider Continuous Integration]]></title>
      <guid>http://www.phpdeveloper.org/news/19717</guid>
      <link>http://www.phpdeveloper.org/news/19717</link>
      <description><![CDATA[<p>
<i>Samantha Quinones</i> has a recent post to her blog about why you should <a href="http://www.tembies.com/2013/06/continuous-integration-deployment-with-php/">consider continuous integration</a> for your projects - some of the benefits and decisions that come along with it.
</p>
<blockquote>
Last night at <a href="http://www.meetup.com/DC-PHP">DCPHP</a>, I gave a short "lightning" talk on <a href="https://speakerdeck.com/squinones/continuous-integration-and-deployment-with-php">Continuous Integration and Deployment</a> in the context of PHP applications. I really like the lightning talk format as it forces you to focus on the meat of your topic- there's no time to get distracted by details. As great as that is, though, I wanted to expand a little on the subject and touch on some of the details that I couldn't include in my presentation.
</blockquote>
<p>
She starts off by talking about what's wrong with a lot of the more traditional build and development practices, noting that "it sucks" because of the processes involved. With the help of continuous integration, some of the process can be automated and make for less human-related errors during a deployment. She talks about some of the things you'll need to do to prepare your codebase and a few things to think about your future setup like:
</p>
<ul>
<li>what does a successful build look like?
<li>how much code needs to be covered by tests to deploy?
<li>should a build be successful if standards are broken or issues found?
</ul>
Link: http://www.tembies.com/2013/06/continuous-integration-deployment-with-php]]></description>
      <pubDate>Fri, 14 Jun 2013 09:39:32 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Action Automation with MySQL Triggers]]></title>
      <guid>http://www.phpdeveloper.org/news/18872</guid>
      <link>http://www.phpdeveloper.org/news/18872</link>
      <description><![CDATA[<p>
For the MySQL users out there, PHPMaster.com has <a href="http://phpmaster.com/action-automation-with-mysql-triggers/">a new tutorial</a> showing you how to use triggers in your database to perform automatic actions on things like "before update" or "after insert".
</p>
<blockquote>
By making MySQL do more work through triggers, the PHP side of my project was greatly simplified. So, it is the intention of this article to give you some insight into the creation and usage of MySQL triggers, so that by the end of this reading you can make use of them in your own projects.
</blockquote>
<p>
They start by explaining what triggers are and how they're created on the database side (with an example syntax). They apply one to a more practical situation - helping keep data integrity on a revenue table based on the data inserted into an events tracking table. Their trigger ("CostCalc") calculates the time of the event on update and updates the revenue table with the correct cost. Also included is the sample PHP code (an "EventHandler") that updates the event records. The trigger fires transparently in the background with no need for the PHP script to make any additional calls.
</p>]]></description>
      <pubDate>Tue, 11 Dec 2012 09:16:29 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Build Automation with Composer Scripts]]></title>
      <guid>http://www.phpdeveloper.org/news/18854</guid>
      <link>http://www.phpdeveloper.org/news/18854</link>
      <description><![CDATA[<p>
If you're a PHP developer and have been looking for a good way to manage 3rd party dependencies in your applications, look no further than <a href="http://getcomposer.org">Composer</a>. If you're already using it, you know how useful it can be, but you might not know about some of the extra features that come with it. In <a href="http://phpmaster.com/build-automation-with-composer-scripts/">this new tutorial</a> on PHPMaster.com, they describe the automation that is also possible as a part of Composer's management process.
</p>
<blockquote>
Following Alexander Cogneau's introduction to <a href="http://phpmaster.com/php-dependency-management-with-composer/">dependency management with Composer</a>, you now know that Composer is a resolver for managing external project dependencies and versioning constraints. But is that all it does? In this article I'll show you how Composer can also be used as a basic build automation tool.
</blockquote>
<p>
Thanks to some handy configuration settings available in the "composer.json" file, you can execute scripts for events like "pre-install", "post-update" and "pre-uninstall". They include an example "Installer" class with methods for a few of the actions, showing some of the special methods you can use to get metadata about the current operation and environment. 
</p>]]></description>
      <pubDate>Thu, 06 Dec 2012 11:01:49 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Automate PSR Compliance through Jenkins]]></title>
      <guid>http://www.phpdeveloper.org/news/18166</guid>
      <link>http://www.phpdeveloper.org/news/18166</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's new tutorial showing how you can <a href="http://phpmaster.com/automate-psr-compliance-through-jenkins/">enforce compliance with the PSR standards</a> in your application's code with the help of the <a href="http://jenkins-ci.org/">Jenkins</a> continuous integration tool.
</p>
<blockquote>
Though it's still early to guarantee that the PSRs will be widely adopted as the de facto standard for writing serious PHP applications, it is interesting to note that a code sniffer and fixer that looks for code deviations was developed by nobody less than Fabien Potencier, the creator of the Symfony framework. (Et bien, ils ne sont pas fous, ces français!) In the rest of the article we shall find out what his PHP-CS-Fixer does and how can it be integrated with a CI tool like Jenkins.
</blockquote>
<p>
He shows how to install a tool that can help you keep your source in compliance - the <a href="http://cs.sensiolabs.org/">"fixer"</a> (created by <i>Fabien Potencier</i>) to help correct the problems found in your code. He includes the command line calls you'll need to run the tool on your code and how to add the step to your build.
</p>]]></description>
      <pubDate>Tue, 03 Jul 2012 09:08:34 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: My Automated PHP Scripts for Creating FTP Connections to a Remote Server]]></title>
      <guid>http://www.phpdeveloper.org/news/18112</guid>
      <link>http://www.phpdeveloper.org/news/18112</link>
      <description><![CDATA[<p>
PHPBuilder.com has posted a new tutorial about <a href="http://www.phpbuilder.com/articles/databases/design/automated-php-scripts-ftp-connections.html">creating automated FTP scripts</a> to pull down information from a remote server (using FTP streams).
</p>
<blockquote>
In 2007 I began working on a website project for an investment company in my hometown of Cleveland, Ohio USA. The purpose of this website was to automatically download financial data of traded securities from two (2) remote Web servers. [...] Both of these PHP scripts were set up on the Web server's "crontab manager" to automatically run at a set time each business day.
</blockquote>
<p>
Code is included showing how to connect to the remote service (via <a href="http://php.net/curl">curl</a>) with a "ftp" stream-based URL as the location. Also included is an example using a <a href="http://php.net/fopen">fopen</a> call to the URL and inserting the resulting data into their tracking tables. The other script pulls the data out and adds a new record to a transactions table for the current day.
</p>]]></description>
      <pubDate>Tue, 19 Jun 2012 10:41:57 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Marcelo Gornstein's Blog: PHP Continuous integration, with Jenkins and Phing]]></title>
      <guid>http://www.phpdeveloper.org/news/17879</guid>
      <link>http://www.phpdeveloper.org/news/17879</link>
      <description><![CDATA[<p>
On his site <i>Marcelo Gornstein</i> has published a new guide to getting a basic automated continuous integration server set up <a href="http://marcelog.github.com/articles/ci_jenkins_hudson_continuous_integration_php_phing.html">with Jenkins and Phing</a>.
</p>
<blockquote>
This article is about how to use <a href="http://www.phing.info/trac/">Phing</a> in your projects, so a <a href="http://en.wikipedia.org/wiki/Continuous_integration">continuous integration</a> server (in this case <a href="http://jenkins-ci.org/>Jenkins</a> -ex Hudson-) can generate the necessary <a href="http://en.wikipedia.org/wiki/Artifact_(software_development)">artifacts</a> for your php application (deployment artifacts, documentation, code metrics, etc). I'll try to show why this will make your life easier when developing or auditing code, generating releases and deploying new versions, trace bugs, etc. All with just a handful of phing tasks. 
</blockquote>
<p>
He introduces the Phing tool and explains how it makes automating the steps of your process simpler, relating it to the <a href="http://ant.apache.org/">Apache Ant</a> tool for those familiar with it. He links to several of the resources used in the process including <a href="http://phpmd.org/>PHPMD</a>, <a href="https://github.com/sebastianbergmann/phploc>PHPLoc</a>, <a href="http://www.docblox-project.org/">DocBlox</a> and <a href="https://github.com/marcelog/Ci-Php-Phing-Example">the code for the article</a> itself. He outlines the process and, complete with <a href="http://marcelog.github.com/articles/ciconfigexample.jpeg">a screenshot of the final result</a>, shows you how to get everything configured and running smoothly.
</p>]]></description>
      <pubDate>Fri, 27 Apr 2012 12:18:30 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Joshua Thijssen's Blog: Facter: Zend Server]]></title>
      <guid>http://www.phpdeveloper.org/news/17316</guid>
      <link>http://www.phpdeveloper.org/news/17316</link>
      <description><![CDATA[<p>
<i>Joshua Thijssen</i> has <a href="http://www.adayinthelifeof.nl/2011/12/28/facter-zendserver/">shared a handy tip</a> for those using Zend Server on a pupptet-ed server - using a Facter plugin to check for the ZS install and only install what's needed (rather than end up with multiple PHP installs).
</p>
<blockquote>
This means you should not install the default PHP package for your distribution when the distribution also runs on Zend Server. This Facter plugin will allow you to use the $zendserver fact inside your own manifests to check if Zend server is installed, so you can take measures against installing stuff that is taken care of by ZendServer itself.
</blockquote>
<p>
You can download the plugin from his github account, <a href="https://github.com/jaytaph/puppet-facter-zendserver">https://github.com/jaytaph/puppet-facter-zendserver</a>, and easily install it into your puppet setup.
</p>]]></description>
      <pubDate>Wed, 28 Dec 2011 11:35:12 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: How to Create an Alfred Extension]]></title>
      <guid>http://www.phpdeveloper.org/news/16744</guid>
      <link>http://www.phpdeveloper.org/news/16744</link>
      <description><![CDATA[<p>
On NetTuts.com today there's a new screencast posted showing you how to <a href="http://net.tutsplus.com/tutorials/php/how-to-create-an-alfred-extension/">create an Alfred extension</a> with PHP (OS X only, obviously). <a href="http://alfredapp.com/">Alfred</a> is "a productivity application for Mac OS X, which aims to save you time in searching your local computer and the web. Whether it's maps, Amazon, eBay, Wikipedia, you can feed your web addiction quicker than ever before".
</p>
<p>
<a href="http://www.youtube.com/watch?v=rx2e35TQOMY">The tutorial</a> walks you through the process of creating the extension (requires v0.99). His example extension is a shell script that pulls contents from <a href="http://lipsum.com/">Lipsum.com</a> and puts it on your clipboard. He uses the <a href="http://simplehtmldom.sourceforge.net/">PHP Simple HTML Dom Parser</a> library to extract the contents of the page. 
</p>
<p>
If you're just looking for the source, you can <a href="http://cl.ly/98ew">download the extension here</a>. For more information on creating extensions in Alfred, look at <a href="http://blog.alfredapp.com/2011/08/02/alfred-extensions/">this new post</a> on their blog.
</p>]]></description>
      <pubDate>Fri, 19 Aug 2011 11:07:31 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Stoyan Stefanov's Blog: Automating HTTPWatch with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/16008</guid>
      <link>http://www.phpdeveloper.org/news/16008</link>
      <description><![CDATA[<p>
<i>Stoyan Stefanov</i> has a two part blog post series looking at automating a tool that lets you look into the HTTP traffic coming and going on your browser - <a href="http://httpwatch.com/">HTTPWatch</a>.
</p>
<blockquote>
<a href="http://httpwatch.com/">HTTPWatch</a> is a nice tool to inspect HTTP traffic in easy and convenient way and it works in both IE and FF now. Drawback - windows-only and paid. But the free version is good enough for many tasks. HTTPWatch can be automated and scripted which is pretty cool for a number of monitoring-like tasks.
</blockquote>
<p>
In <a href="http://www.phpied.com/automating-httpwatch-with-php/">the first post</a> he shows you how to get started with the tool - installation and using it in a sample script (via a COM object). He creates FireFox and IE windows and shows how to clear their caches and record the traffic. He's included a screencast of it all to show the result. In the <a href="http://www.phpied.com/automating-httpwatch-with-php-2/">second post</a> he shares <a href="https://github.com/stoyan/etc/blob/master/httpwatch/HTTPWatch.php">a library he's written</a> to help make it even simpler to use (complete with code samples).
</p>
<p>
UPDATE: He's also posted <a href="http://www.phpied.com/automating-httpwatch-with-php-3/">part #3</a> that's more about using COM and PHP.
</p>]]></description>
      <pubDate>Mon, 07 Mar 2011 13:49:12 -0600</pubDate>
    </item>
  </channel>
</rss>
