<?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>Thu, 24 May 2012 10:26:55 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Anna Filina's Blog: Podcast About Sexism in Tech: What I Learned]]></title>
      <guid>http://www.phpdeveloper.org/news/17745</guid>
      <link>http://www.phpdeveloper.org/news/17745</link>
      <description><![CDATA[<p>
<i>Anna Filina</i> has a new post to her blog about her <a href="http://annafilina.com/blog/sexism-in-tech/">participation in the "Sexism in Tech" podcast</a> that was <a href="http://voicesoftheelephpant.com/2012/03/27/sexism-in-tech">recently released</a> on the "Voices of the ElePHPant" podcast.
</p>
<blockquote>
I had the pleasure of discussing with fellow members of the PHP community a very sensitive topic: sexism in tech. I have been invited to a special <a href="http://voicesoftheelephpant.com/2012/03/27/sexism-in-tech">episode of Voices of the ElePHPant</a> with Elizabeth (Beth) Tucker Long, Elizabeth (Liz) Naramore and Laura Thomson. Cal Evans was the host. The podcast's page features links for some of the topics discussed. The purpose of this post is not to transcribe the podcast, but to share with you what I learned from this conversation and what I personally took away from it.
</blockquote>
<p>
She talks about some of the comments that came up about the general tech culture and attitudes around women, some thoughts about "brand hygiene" and her opinions on wether the tech industry (or more specifically software development) will mature past this gender issue being a problem.
</p>]]></description>
      <pubDate>Wed, 28 Mar 2012 12:03:33 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Bas De Nooijer's Blog: Benchmarking PHP Solr response data handling]]></title>
      <guid>http://www.phpdeveloper.org/news/17617</guid>
      <link>http://www.phpdeveloper.org/news/17617</link>
      <description><![CDATA[<p>
On his blog <i>Bas De Nooijer</i> has put together <a href="http://www.raspberry.nl/2012/02/28/benchmarking-php-solr-response-data-handling/">some PHP Solr benchmarks</a> around a few different ways to handle the response data.
</p>
<blockquote>
Solr supports multiple output formats. Some are for general use (xml, json) and some are even language specific. If you're using PHP these are the most logical response writer formats: xml, json, phps (serialized php), php (php code to execute). On top of that PHP offers multiple ways to parse XML. I'm benchmarking these options to determine the most efficient decoding to implement in the next major version of <a href="http://www.solarium-project.org/">Solarium</a>, but the results should be useful for any PHP Solr implementation.
</blockquote>
<p>
He includes a snippet of code he's using to generate the benchmarks, a PHPUnit test that pulls in two different json-based results and, for now, just runs a <a href="http://php.net/json_decode">json_decode</a> on it. You can see the results of his testing <a href="http://www.raspberry.nl/files/solr-decode-performance.html">here</a>, graphing out the different response handling methods and their time (in milliseconds) to parse the response. It's interesting to see that there's a direct relation to the size of the data set and how long it takes for the methods to execute.
</p>
<p>
The current code for his benchmarks is available <a href="https://github.com/basdenooijer/phperf">over on github</a>
</p>]]></description>
      <pubDate>Fri, 02 Mar 2012 09:08:03 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Dave Marshall's Blog: How I'm designing a RESTful(ish) web service]]></title>
      <guid>http://www.phpdeveloper.org/news/17570</guid>
      <link>http://www.phpdeveloper.org/news/17570</link>
      <description><![CDATA[<p>
<i>Dave Marshall</i> is in the process of building a "RESTish" web service and has <a href="http://davedevelopment.co.uk/2012/02/16/how-im-doing-rest.html">shared some of his planning steps</a> in a new post to his blog.
</p>
<blockquote>
This post is going to describe how I've ending up designing, what I consider to be a fairly RESTful web API. I'm far from being an expert, and this is definitely the closest thing to a RESTful API that I've ever created, so I'm not even experienced with REST APIs. [...] Until about 6 months ago, I'd always been sceptical of creating RESTful APIs, but I think I've had a few pennies drop since then that have made me fairly confident that I grasp the basics pretty well.
</blockquote>
<p>
He touches on topics like: authentication, the <a href="http://martinfowler.com/articles/richardsonMaturityModel.html">Richardson Maturity model</a>, HTTP verbs, sample request and response messages and some BDD-style tests to predict the output of a basic request.
</p>]]></description>
      <pubDate>Wed, 22 Feb 2012 09:13:31 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: A Response to "The MicroPHP Manifesto"]]></title>
      <guid>http://www.phpdeveloper.org/news/17344</guid>
      <link>http://www.phpdeveloper.org/news/17344</link>
      <description><![CDATA[<p>
On Reddit today there's <a href="http://www.reddit.com/r/PHP/comments/o19zj/the_microphp_manifesto/">a rather large discussion</a> going on about the <a href="http://phpdeveloper.org/news/17341">recently posted manifesto</a> from <i>Ed Finkler</i> about building simple, manageable tools rather than using "kitchen sink" frameworks for your applications.
</p>
<p>
As of the time of this post there's about sixty-five comments posted to the thread with widely ranging opinions:
</p>
<ul>
<li>"How is [lots of separate libraries scattered around] better than simply using a framework?"
<li>"This is part of the reason for the PSR0 reference for auto loaders [...] Part of the problem is an inconsistent way to load modules."
<li>"I would love to see this become a trend in the PHP community. I think this is exactly the direction needed to make PHP exciting again and regain mindshare in the wider dev community."
<li>"I know, many people are currently on that micro trip but seriously, I think that there is as much to microframeworks as there is to microoptimization"
<li>"A framework is a tool. If you don't need it, why use it?"
<li>"There's a tool for ever job, I agree some projects or companies "need" something like Zend or Symfony for their enterprise projects. Whether or not you'd want to work on a project with 1000's of classes is something else all together."
</ul>
<p>
Read the full responses to <i>Ed</i>'s article <a href="http://www.reddit.com/r/PHP/comments/o19zj/the_microphp_manifesto/">here</a>.
</p>]]></description>
      <pubDate>Wed, 04 Jan 2012 09:18:42 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Freek Lijten's Blog: The real problem of the hash table dos attack]]></title>
      <guid>http://www.phpdeveloper.org/news/17328</guid>
      <link>http://www.phpdeveloper.org/news/17328</link>
      <description><![CDATA[<p>
In response to some of the comments being made about the hash table Denial of Service attack <a href="http://phpdeveloper.org/news/17322">recently posted</a> <i>Freek Lijten</i> has <a href="http://www.freeklijten.nl/home/2011/12/29/The-real-problem-of-the-hash-table-dos-attack">posted his thoughts</a> about the real problem with the whole situation - how it was handled by the communities involved.
</p>
<blockquote>
Interesting they may be, but I want to address what in my opinion is the real problem: The way the communication around it was handled by different projects and the fact that the exploit could still exist at all. [...] In the presentation <a href="https://twitter.com/#!/zeri42">W&auml;lde</a> and <a href="https://twitter.com/#!/alech">Klink</a> talk about their disclosure process. The PHP project had them wait 3 weeks for a first response while this is obviously a serious matter.
</blockquote>
<p>
He argues that things like a commit message mentioning a DoS prevention fix instead of just mentioning the fix have the potential to do more harm than good. He also points out that other communities were notified of the problem (like Python) and some still haven't responded to the issue.
</p>
<blockquote>
This attack was the result of good research and it is important that it is disclosed. More importantly however is the fact that organisation got by with years of not noticing it and even worse, reacted very poor after being informed. I can't say I have a ready solution to avoid these kind of things in the future, perhaps that will prove to be an interesting discussion.
</blockquote>]]></description>
      <pubDate>Fri, 30 Dec 2011 12:53:35 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Chris Hartjes' Blog: Better HTTP Request/Response in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17256</guid>
      <link>http://www.phpdeveloper.org/news/17256</link>
      <description><![CDATA[<p>
In a recent post to his blog <i>Chris Hartjes</i> looks at the idea of <a href="http://www.littlehart.net/atthekeyboard/2012/12/12/better-http-request-response-in-php/">better HTTP Request/Response functionality</a> in PHP, more than just the <a href="http://us3.php.net/manual/en/language.variables.superglobals.php">superglobal</a> handling and <a href="http://www.php.net/http">PECL HTTP extension</a> it has now.
</p>
<blockquote>
I think the fact that we have $_POST and $_GET lulls some of us into the false sense that we should have $_PUT and $_DELETE objects, since that would map to the commonly-desired set of HTTP verbs that REST likes to use. But what should be inside those things, or should we be moving towards a more Pythonesque solution where a Request object, as part of core or via a only-really-for-the-brave- PECL extension?
</blockquote>
<p>
He mentions opinions from other PHP community members (<a href="http://twitter.com/lxt">Laura Thompson</a> and <a href="http://twitter.com./auroraeosrose">Elizabeth Smith</a>) and a bit about what he (and I'm sure other developers) are looking for in a more full-featured request/response handling feature.
</p>]]></description>
      <pubDate>Wed, 14 Dec 2011 09:51:03 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[David Stockton's Blog: Changing ErrorController to work with AJAX]]></title>
      <guid>http://www.phpdeveloper.org/news/16709</guid>
      <link>http://www.phpdeveloper.org/news/16709</link>
      <description><![CDATA[<p>
<i>David Stockton</i> has a new tutorial posted to his blog - a technique he's found useful in his Zend Framework application to make the <a href="http://zendtutorials.com/tutorial/changing-errorcontroller-to-work-with-ajax/">ErrorController work with Ajax calls</a> to reduce the message you get back to just a JSON response.
</p>
<blockquote>
If you've ever built a Zend Framework MVC app which makes AJAX calls, you may have noticed that if an error occurs, you'll get a chunk of JSON followed by the HTML for the error page. If you've built a layout, you'll get all of that back to. This is fine if your users hit the page in the browser but it can cause problems with your JavaScript being able to correctly decode your JSON.
</blockquote>
<p>
The fix is pretty simple, though, and only requires that you add the error handling action to the Ajax context to force it to drop the layout and any other HTML that might come along with the view. He includes a bit more code to have the error handler include the exceptions and pass them out to be included in the JSON response.
</p>]]></description>
      <pubDate>Fri, 12 Aug 2011 08:58:06 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: Security Review: Creating a Secure PHP Login Script]]></title>
      <guid>http://www.phpdeveloper.org/news/16670</guid>
      <link>http://www.phpdeveloper.org/news/16670</link>
      <description><![CDATA[<p>
In response to <a href="http://phpdeveloper.org/news/16645">this article from DevShed</a> about creating a "simple and secure login script", <i>Anthony Ferrara</i> has <a href="http://blog.ircmaxell.com/2011/08/security-review-creating-secure-php.html">written up this post</a> to help dispel some of the inaccuracies, bad practices and security issues that could result from DevShed's code.
</p>
<blockquote>
I decided to click the link [in my feed reader] and give the article a read. Not overly shocking was the fact that I didn't find the content of the article to be, how shall I say this..., overly factual. It's not really a "tutorial", but more of a "here's some code that's secure". A quick review of the code found more than one vulnerability, and some significant things that I would change about it (as well as a few "really bad practices").
</blockquote>
<p>
He walks through each of the files included in the original tutorial - Authenticate.php, Register.php and Logout.php - and talks about things like brute force detection, password verification, registration handling and session serialization. He finishes it off with a list of twelve overall issues he noticed during his work along with solutions for each (usually very simple ones too).
</p>]]></description>
      <pubDate>Wed, 03 Aug 2011 12:02:19 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: In Response To: Building Secured Web Applications Using PHP - The Basics]]></title>
      <guid>http://www.phpdeveloper.org/news/16529</guid>
      <link>http://www.phpdeveloper.org/news/16529</link>
      <description><![CDATA[<p>
In a response to <a href="http://phpdeveloper.org/news/16517">this post</a> that introduced some basic security methods for your applications, <i>Anthony Ferrara</i> has <a href="http://blog.ircmaxell.com/2011/06/in-response-to-building-secured-web.html">posted some corrections</a> and updates to the suggested methods, even pointing out where some of them are completely wrong.
</p>
<blockquote>
Today an article popped into my feed reader that raise my eyebrows.  The article's title is "<a href="http://noobcode.blogspot.com/2011/05/building-secured-web-applications-using.html">Building Secured Web Applications Using PHP - The Basics</a>".  The summary of the item looked interesting, so I decided to open it up...What I found blew me away.  It was filled with loads of bad information including some down-right wrong suggestions.  Let me go through point by point and shed some light on the subject...
</blockquote>
<p>
<a href="http://blog.ircmaxell.com/2011/06/in-response-to-building-secured-web.html">His response</a> goes back through the original article by section header and explains either why the advice was bad and/or the more correct way to do things.
</p>
<blockquote>
Security is not something you can learn in a page.  It's not something that you can learn in a single book.  It takes a lot of time and effort.  It should not be trivialized into a simple "Do this and you'll be secure" style post.  It sends the wrong message...
</blockquote>]]></description>
      <pubDate>Tue, 28 Jun 2011 11:15:10 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Michael Nitschinger's Blog: Caching responses in Lithium]]></title>
      <guid>http://www.phpdeveloper.org/news/16398</guid>
      <link>http://www.phpdeveloper.org/news/16398</link>
      <description><![CDATA[<p>
<i>Michael Nitschinger</i> has put together a guide to <a href="http://nitschinger.at/Caching-responses-in-Lithium">caching responses in the  Lithium framework</a> - a simple update that means your application dosen't even need to reach the controllers to do its job.
</p>
<blockquote>
I've hacked together a small example on how to easily cache full responses in Lithium. If you need to cache full Response objects in Lithium (which means that your controllers don't even get called when there's a cache hit), you can place this in your app/config/bootstrap/cache.php file (note that this is certainly not "production ready", but it should give you a starting point).
</blockquote>
<p>
The code adds a new filter to run on execute that takes the current object (the Response object hit the first time) and use the Cache functionality to push it into storage. Their cache key is based on the URL, so each requests is cached individually. You can find out more about filters and the framework at <a href="http://lithify.me/">Lithify.me</a>.
</p>]]></description>
      <pubDate>Mon, 30 May 2011 10:28:05 -0500</pubDate>
    </item>
  </channel>
</rss>

