<?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>Mon, 21 May 2012 10:49:10 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Marcelo Gornstein's Blog: Unit test your PHP IVR applications with PAGI]]></title>
      <guid>http://www.phpdeveloper.org/news/17613</guid>
      <link>http://www.phpdeveloper.org/news/17613</link>
      <description><![CDATA[<p>
<i>Marcelo Gornstein</i> has a recent post to his blog about a method he's come up with to test your PHP-based IVR ("interactive voice response" systems for telephony) applications <a href="http://marcelog.github.com/articles/pagi_mock_client_unit_test_ivr_application_telephony_asterisk_agi.html">with the help of PAGI</a>.
</p>
<blockquote>
Since version 1.9.2, <A href="http://marcelog.github.com/PAGI/">PAGI</a> comes with a mock of a pagi client, suitable to be used in your own unit tests, so you can test your telephony applications, like IVRs. The idea behind the mocked client is to let you test the callflow side of your application, the user interaction and the exact sequence an ivr application should obey. Let's see how to use it.
</blockquote>
<p>
He shows how to test a <a href="http://marcelog.github.com/articles/pagi_tutorial_create_voip_telephony_application_for_asterisk_with_agi_and_php.html">basic PAGI application</a> by hooking in the PAGI client into his <a href="https://github.com/marcelog/Pagi-App-And-Test-Example/blob/master/test/php/App/AppTest.php">PHPUnit test</a> for the app and the <a href="http://marcelog.github.com/articles/pagiexamplecoverage.png">code coverage</a> of the result. The <a href="http://ci.marcelog.name:8080/job/PAGI/javadoc/db_Client_Impl_MockedClientImpl.html#%5CPAGI%5CClient%5CImpl%5CMockedClientImpl">MockedClientImpl</a> client lets you test the application without having the external dependency of actually running it. He includes some examples of commands and how they'd be mocked out with this client as well as a handy list of the "on*" methods available (like "onDial" or "onSayAlpha").
</p>
<p>
You can find the complete source for everything in the article <a href="https://github.com/marcelog/Pagi-App-And-Test-Example">on his github account</a>.
</p>]]></description>
      <pubDate>Thu, 01 Mar 2012 13:25:49 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[php|architect: What Will Power the Future of the Internet: REST or SOAP? ]]></title>
      <guid>http://www.phpdeveloper.org/news/17599</guid>
      <link>http://www.phpdeveloper.org/news/17599</link>
      <description><![CDATA[<p>
On the php|architect site today there's <a href="http://www.phparch.com/2012/02/what-will-power-the-future-of-the-internet-rest-or-soap/">a new article</a> from <i>Luke Stokes</i> asking a question about the future of the web (and web serivces) - is the future in REST or SOAP?
</p>
<blockquote>
I was recently asked why we chose REST over SOAP for our re-write of the <a href="http://www.foxycart.com/">FoxyCart.com</a> API, and the short answer that immediately came to mind was, "Because I don't hate myself". To expand on that answer, let me give you a little bit of the back story.
</blockquote>
<p>
He talks about their goals for the product and its API, how they wanted to create something useful, built by developers for developers. They leaned towards REST mostly because of the problems and overhead introduced with SOAP (and the complex nature of its requests). He also gives a few reasons why he's "excited about REST": working with known data types, standard interface methods and the fact that it's still such a hot topic of discussion.
</p>
<blockquote>
These questions [about HATEOS, hypermedia, vendor-specific content types] might seem overwhelming, but for us they are exciting! We believe the future of consistent, powerful API development is being defined right now, and we get to be a part of it.
</blockquote>]]></description>
      <pubDate>Tue, 28 Feb 2012 12:16:17 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[IBM developerWorks: Hook into Wikipedia information using PHP and the MediaWiki API]]></title>
      <guid>http://www.phpdeveloper.org/news/16732</guid>
      <link>http://www.phpdeveloper.org/news/16732</link>
      <description><![CDATA[<p>
On the IBM developerWorks site, there's a tutorial from <i>Vikram Vaswani</i> showing you how to <a href="http://www.ibm.com/developerworks/web/library/x-phpwikipedia/index.html?ca=drs-">connect to Wikipedia's API</a> in your PHP application. It shows how to fetch, search and update entries through their backend. The tutorial's a little bit older (from May 2011) but the content is still relevant.
</p>
<blockquote>
Wikipedia is the ultimate online encyclopedia, containing millions of entries on different aspects of human knowledge. Web application developers are able to access and search these entries through the Wikipedia API. This article introduces the Wikipedia API and demonstrates it in the context of a PHP application, explaining how to search and retrieve different elements of Wikipedia content with PHP.
</blockquote>
<p>
He starts with a general introduction to the API including example feed results and URL request formats. From there he moves into the code - a mostly Zend Framework-driven example that uses the REST client. He shows how to make requests for categories, full-text search, grabbing raw page content and adding/editing the content of pages.
</p>]]></description>
      <pubDate>Wed, 17 Aug 2011 12:16:25 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Maarten Balliauw's Blog: A client side Glimpse to your PHP application]]></title>
      <guid>http://www.phpdeveloper.org/news/16669</guid>
      <link>http://www.phpdeveloper.org/news/16669</link>
      <description><![CDATA[<p>
<i>Maarten Balliauw</i> has <a href="http://blog.maartenballiauw.be/post/2011/08/02/A-client-side-Glimpse-to-your-PHP-application.aspx">announced the release</a> of a PHP port of a powerful tool for server-side introspection of your applications - <a href="https://github.com/Glimpse/Glimpse.PHP">Glimpse for PHP</a>.
</p>
<blockquote>
A few months ago, the .NET world was surprised with a magnificent tool called "<a href="http://getglimpse.com/">Glimpse</a>". Today I'm pleased to release a <a href="https://github.com/Glimpse/Glimpse.PHP">first draft of a PHP version for Glimpse</a>! Now what is this Glimpse thing… Well: "what Firebug is for the client, Glimpse does for the server... in other words, a client side Glimpse into whats going on in your server."
</blockquote>
<p>
He includes a of how the introspection works and some <a href="http://blog.maartenballiauw.be/post/2011/08/02/A-client-side-Glimpse-to-your-PHP-application.aspx">sample code</a> using a phar to add it to your PHP application. You can see it in action in <a href="http://www.screenr.com/27ds">this screencast</a> based on the PHP Azure Contest website. He also shows one very cool feature that allows for cross-device tracking of requests. You can find this PHP port of Glimpse <a href="https://github.com/Glimpse/Glimpse.PHP">on github</a>.
</p>]]></description>
      <pubDate>Wed, 03 Aug 2011 11:28:54 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[CodeForest.net: Android JSON-RPC client and PHP Zend Framework server]]></title>
      <guid>http://www.phpdeveloper.org/news/16585</guid>
      <link>http://www.phpdeveloper.org/news/16585</link>
      <description><![CDATA[<p>
In a recent post to CodeForest <i>Luka Peharda</i> shows you how to <a href="http://www.codeforest.net/android-json-rpc-client-and-php-zend-framework-server">create a JSON-RPC frontend</a> for your application based on the Zend Framework.
</p>
<blockquote>
XML-RPC rules, but the amount of data it generates is its big disadvantage. This is where JSON-RPC steps in. Data it generates is significally smaller, but this isn't suprising as JSON is known as fat free XML.This articles is based on my earlier <a href="http://www.codeforest.net/how-to-build-php-xml-rpc-server-client-and-android-app">Android XML-RPC article</a>. Its PHP code and Zend Framework setup will be used so you should go through it if you haven't earlier (at least as far as XMLRPC Android client chapter).
</blockquote>
<p>
You need to have some of the base code from <a href="http://www.codeforest.net/how-to-build-php-xml-rpc-server-client-and-android-app">the previous article</a> in place to follow along, but if you're experienced with Zend Framework, keeping up won't be a problem. He uses <a href="http://www.tanabi.com/projects/jsonrpc">this JSON-RPC client</a> that was made for use with a ZF application and creates a basic jsonAction to handle the request. He then uses <a href="http://code.google.com/p/android-json-rpc/">this Android JSON-RPC library</a> to connect from the Android application and fetch some basic data.
</p>]]></description>
      <pubDate>Wed, 13 Jul 2011 10:14:36 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Josh Adell's Blog: Path finding with Neo4j]]></title>
      <guid>http://www.phpdeveloper.org/news/16530</guid>
      <link>http://www.phpdeveloper.org/news/16530</link>
      <description><![CDATA[<p>
In a follow up to his previous post on <a href="http://phpdeveloper.org/news/16485">using Neo4j with PHP</a>, <i>Josh Adell</i> looks in a bit more detail about how to <a href="http://blog.everymansoftware.com/2011/06/path-finding-with-neo4j.html">find paths in the data</a> via a REST interface to the database.
</p>
<blockquote>
The thing that makes graphing databases useful is the ability to find relationship paths from one node to another. There are many algorithms for finding paths efficiently, depending on the use case.
</blockquote>
<p>
He includes some code showing the REST request (made via <a href="https://github.com/jadell/Neo4jPHP">this client</a>) to fetch <a href="http://1.bp.blogspot.com/-qteFgW-vvPE/TgK3beUyk_I/AAAAAAAAAA8/cstHGsCaLEU/s1600/street_graph.png">these street-based relationships</a>. He then creates a little sample script that provides driving directions from one intersection to another with a "findPathsTo" call. He modifies it a bit later on to use the <a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm">Dijkstra algorithm</a>.
</p>]]></description>
      <pubDate>Tue, 28 Jun 2011 12:38:01 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Project: Guzzle - RESTful web service client development framework]]></title>
      <guid>http://www.phpdeveloper.org/news/16219</guid>
      <link>http://www.phpdeveloper.org/news/16219</link>
      <description><![CDATA[<p>
<i>Michael Dowling</i> tipped us off to <a href="http://www.guzzlephp.org/">Guzzle</a>, a RESTful web service client framework that lets you build testable web service clients quickly and easily.
</p>
<blockquote>
Guzzle helps you speed up the process of creating a RESTful web service client by giving you full control of HTTP requests and access to advanced features like persistent HTTP connections, parallel requests, exponential backoff, over the wire logging, MD5 validation, cookie jars, and a caching forward proxy.
</blockquote>
<p>
Installing the framework is as easy as <a href="http://s3.guzzlephp.org/guzzle.phar">grabbing the phar archive</a> and including it in your application. Some sample code examples are included right on the front page - a simple client pulling down an XML file, grabbing Amazon S3 content, working with the HTTP request on a finer scale and making parallel requests.
</p>]]></description>
      <pubDate>Tue, 19 Apr 2011 12:39:16 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DZone.com: Solarium PHP Solr client]]></title>
      <guid>http://www.phpdeveloper.org/news/16160</guid>
      <link>http://www.phpdeveloper.org/news/16160</link>
      <description><![CDATA[<p>
New on DZone.com today there's an article from <i>Bas De Nooijer</i> talking about a new tool he's created to allow <a href="http://css.dzone.com/news/solarium-php-solr-client">PHP to work directly with Solr</a> (the popular searching platform from the Apache project) as a result of research he'd done from a <a href="http://blog.raspberry.nl/2010/07/20/integrating-solr-with-php/">previous article</a>. The result is < href="https://github.com/basdenooijer/solarium">Solarium</a>, an open sourced PHP client for Solr.
</p>
<blockquote>
I've worked on a lot of Solr implementations in PHP applications. There are multiple solutions: manual HTTP requests, the solr-php-client library, custom implementations etcetera. However they all have one issue in common: they only handle the communication with Solr, many other important parts like query building are not covered at all. And the parts that are covered are usually over-simplified. [...] At first I developed it as a library for my own projects, but I've decided to turn it into an opensource project. The project is called 'Solarium' and can be found on github: <a href="https://github.com/basdenooijer/solarium">https://github.com/basdenooijer/solarium</a>
</blockquote>
<p>
You can find complete details about the project over on <a href="http://wiki.solarium-project.org/index.php/Main_Page">its wiki</a> including basics concepts of query flow and using the ping/select/update query methods to access your Solr server.
</p>]]></description>
      <pubDate>Thu, 07 Apr 2011 10:09:31 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: Watermarks in our images with PHP and Gearman]]></title>
      <guid>http://www.phpdeveloper.org/news/16007</guid>
      <link>http://www.phpdeveloper.org/news/16007</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> had <a href="http://phpdeveloper.org/news/15975">previously shown</a> how to dynamically add watermarks to your images with the help of a mod_rewrite rule. One of the side effects of this is that, with a high load on your server, things can get bogged down quite quickly. His alternative? Add the watermarks to your images <a href="http://gonzalo123.wordpress.com/2011/03/07/watermarks-in-our-images-with-php-and-gearman/">with Gearman</a> workers.
</p>
<blockquote>
In this second solution I will use a <a href="http://gearman.org/">gearman</a> worker to generate the watermarks. The benefits of <a href="http://gearman.org/?id=gearman_php_extension">gearman</a> is the possibility of use a <a href="http://www.php.net/manual/en/gearmanclient.addserver.php">pool</a> of workers. We can add/remove workers if our application scales. Those workers can be placed even at different hosts, and we can swap easily from one configuration to another.
</blockquote>
<p>
He includes some sample scripts to illustrate the process - a Gearman client that'll call the watermarking process and a worker that takes in the image and transforms it with GD to add a new layer for the watermark.
</p>]]></description>
      <pubDate>Mon, 07 Mar 2011 12:12:17 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Chris Jones' Blog: More on PHP and Oracle 11gR2 Improvements to Client Result Caching]]></title>
      <guid>http://www.phpdeveloper.org/news/15997</guid>
      <link>http://www.phpdeveloper.org/news/15997</link>
      <description><![CDATA[<p>
<i>Chris Jones</i> has posted more information to his Oracle blog about the <a href="http://blogs.oracle.com/opal/2011/03/more_on_php_and_oracle_11gr2_i.html">caching and other improvements</a> that come along with the Oracle 11gR2 release that can be used in PHP applications.
</p>
<blockquote>
Oracle 11.2 brought several improvements to Client Result Caching. CRC is way for the results of queries to be cached in the database client process for reuse. [...] PHP OCI8 as a "client" of the database can use CRC.  The cache is per-process, so plan carefully before caching large data sets.  Tables that are candidates for caching are look-up tables where the network transfer cost dominates.
</blockquote>
<p>
Like many of the other server-side tools Oracle has to offer, it's pretty simple to enable this caching. Before you had to add a custom bit to your query to tell it to enable the caching. Now it's as simple as setting it up on the CREATE or ALTER for the table - nothing extra for the developer to do.
</p>]]></description>
      <pubDate>Fri, 04 Mar 2011 09:56:33 -0600</pubDate>
    </item>
  </channel>
</rss>

