<?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, 21 May 2013 06:04:45 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Sameer Borate: Efficiently Replicating RETS data to MySQL]]></title>
      <guid>http://www.phpdeveloper.org/news/19542</guid>
      <link>http://www.phpdeveloper.org/news/19542</link>
      <description><![CDATA[<p>
<i>Sameer Borate</i> has a new post to his site that shares how he <a href="http://www.codediesel.com/data/efficiently-replicating-rets-data-to-mysql/">converted a RETS database to MySQL</a> with the help of a PHP library, <a href="https://github.com/troydavisson/PHRETS/wiki">PHPRETS</a>.
</p>
<blockquote>
A recent project of mine entailed replicating a <a href="http://www.reso.org/rets">RETS</a> database on a local MySQL database server. The client had a new real-estate mobile search app in development and wanted to have a local copy of the RETS database for search queries instead of a remote RETS server. [...] Replicating RETS data rather than using the live version is slightly complex, however. In order to replicate the RETS data into your own local database, a series of processes are needed in order to make sure the data you have is both updated and in sync with the server. 
</blockquote>
<p>He breaks it down into three main steps with some sample code for each:</p>
<ul>
<li>Grabbing the complete database once
<li>Keeping the data in sync
<li>Ensuring the cron job is executed on regular intervals
</ul>
Link: http://www.codediesel.com/data/efficiently-replicating-rets-data-to-mysql]]></description>
      <pubDate>Fri, 03 May 2013 10:26:33 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Josh Adell: Serializing Data Like a PHP Session]]></title>
      <guid>http://www.phpdeveloper.org/news/19534</guid>
      <link>http://www.phpdeveloper.org/news/19534</link>
      <description><![CDATA[<p>
In <a href="http://blog.everymansoftware.com/2013/05/serializing-data-like-php-session.html">this new post</a> <i>Josh Adell</i> looks at working with PHP sessions and how you can manually encode data to look as if it came from the normal session handling.
</p>
<blockquote>
If you have ever popped open a PHP session file, or stored session data in a database, you may have noticed that this serialization looks very similar to the serialize function's output, but it is not the same. Recently, I needed to serialize data so that it looked like PHP session data (don't ask why; I highly suggest not doing this if it can be avoided.) It turns out, PHP has a function that encodes data in this format: <a href="http://php.net/session_encode">session_encode</a>. 
</blockquote>
<p>
Unfortunately, this method doesn't take arguments - it just outputs the encoded version of the current session data. So, he came up with his own encode/decode methods that use the PHP session, extract the serialized string and return it.
</p>
Link: http://blog.everymansoftware.com/2013/05/serializing-data-like-php-session.html]]></description>
      <pubDate>Thu, 02 May 2013 09:11:33 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Mike Dalisay: Salt, Hash and Store Passwords Securely with Phpass]]></title>
      <guid>http://www.phpdeveloper.org/news/19427</guid>
      <link>http://www.phpdeveloper.org/news/19427</link>
      <description><![CDATA[<p>
On <i>Mike Dalisay</i>'s site there's a recent post showing how to use the <a href="http://www.openwall.com/phpass/">Phpass</a> tool to <a href="http://www.codeofaninja.com/2013/03/php-hash-password.html#.UVziYKUm0sc.dzone">salt, hash and store passowrd data</a> in your application.
</p>
<blockquote>
I think the main reason why we have to hash passwords is to prevent passwords from being stolen or compromised. You see, even if someone steal your database, they will never read your actual or cleartext password. I know that some PHP frameworks or CMS already provide this functionality, but I believe that it is important for us to know how its implementation can be made.
</blockquote>
<p>
His <a href="https://docs.google.com/file/d/0B-AInNrVeucKZGgzWThFdUNhNVk/edit?usp=sharing">sample application</a> stores the user data in a MySQL database and does the salting+hashing at the time of the request. It uses a hard-coded salt and a value of 8 for the hashing/stretching.  Screenshots of each page in the example application are also included.
</p>
Link: http://www.codeofaninja.com/2013/03/php-hash-password.html#.UVziYKUm0sc.dzone]]></description>
      <pubDate>Mon, 08 Apr 2013 12:16:29 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPBuilder.com: Building a PHP RSS Aggregator]]></title>
      <guid>http://www.phpdeveloper.org/news/19413</guid>
      <link>http://www.phpdeveloper.org/news/19413</link>
      <description><![CDATA[<p>
On PHPBuilder.com today there's a quick tutorial showing you how to <a href="http://www.phpbuilder.com/articles/php-functions/xml/building-a-php-rss-aggregator.html">build an RSS aggregator</a> that can pull in RSS content and drop it into a MySQL table.
</p>
<blockquote>
RSS stands for Really Simple Syndication. It is a Web format that allows website owners to distribute their latest and frequently updated content in a standardized way. RSS feed is actually an XML document that can be easily read by using RSS reader software or built-in functions in programming languages, such as PHP or Java. In this article, the focus will be on building a RSS aggregator in PHP.
</blockquote>
<p>
They introduce the basics of an RSS feed - a specially formatted XML document with values for individual posts (like "title" and "link". They provide the SQL structure for the "article" and "feed" tables and the code to pull out each "feed" record, parse it and drop that into the "article" table for later consumption. They show two different methods for getting the content - one using <a href="http://php.net/file_get_contents">file_get_contents</a> and another using <a href="http://php.net/curl">cURL</a>.
</p>
Link: http://www.phpbuilder.com/articles/php-functions/xml/building-a-php-rss-aggregator.html]]></description>
      <pubDate>Thu, 04 Apr 2013 13:09:13 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Learn Computer: Is LAMP Pack Still Strong?]]></title>
      <guid>http://www.phpdeveloper.org/news/19393</guid>
      <link>http://www.phpdeveloper.org/news/19393</link>
      <description><![CDATA[<p>
On the "Learn Computer" site there's a <a href="http://www.learncomputer.com/is-lamp-pack-still-strong/">recent post</a> that wonders if the web development standard of the LAMP (Linux, Apache, MySQL and PHP) stack is "still strong" and will still stand up with new technologies.
</p>
<blockquote>
This year in tech (like almost every other year) has been filled with buzzwords. Many of them this year, however, are based around big data processing and web content: NoSQL, Hadoop, BigTable - the list goes on. With all the fuss around these new technologies, one might be tempted into thinking that these are the technologies of the future, and that from now on our servers and websites will be built upon, leaving technologies like LAMP in the dust. 
</blockquote>
<p>
They talk about some of the things the LAMP stack <i>doesn't</i> do well like difficulties with scalability on both the web server and database side. There's also mention of the things that it does do well, like getting things up and running quickly and with a solid structure. 
</p>
<blockquote>
That being the case, the LAMP stack is still going very strong, and it's definitely still extremely viable in small and medium-sized deployments; there are no signs of it waning in that regard, and I'd expect it to be a standard deployment for many companies and organizations for quite some time to come.
</blockquote>]]></description>
      <pubDate>Mon, 01 Apr 2013 12:55:09 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Avoid the Original MySQL Extension, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19235</guid>
      <link>http://www.phpdeveloper.org/news/19235</link>
      <description><![CDATA[<p>
PHPMaster.com has posted the <a href="http://phpmaster.com/avoid-the-original-mysql-extension-2/">second part</a> of their "avoid the original MySQL extension" tutorial series (part one is <a href="http://phpmaster.com/avoid-the-original-mysql-extension-1/">here</a>). In this new part, they share more about another alternative - the PDO extension.
</p>
<blockquote>
The PDO extension supports twelve drivers, enabling it to connect to a variety of relational databases without the developer having to learn a number of different APIs. It does this by abstracting the database interaction calls behind a common interface, enabling the developer to utilize a consistent interface for different databases. This of course gives it a major advantage over both the MySQL and MySQLi extensions who are limited to only one database.
</blockquote>
<p>
Included in the post are examples of some of the basics - connecting, executing queries, getting the results - as well as more compelx things like binding parameters and transaction support. There's also a bit about changing the default behavior of the PDO object through config options. He finishes off the article talking some about some of the issues that could come from using an abstraction layer like this and the need to still write good, compatible SQL depending on the database.
</p>]]></description>
      <pubDate>Mon, 25 Feb 2013 13:40:09 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Avoid the Original MySQL Extension, Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19188</guid>
      <link>http://www.phpdeveloper.org/news/19188</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a new post, the first in a series, about <a href="http://phpmaster.com/avoid-the-original-mysql-extension-1/">avoiding the original MySQL extension</a> in favor of what <a href="http://php.net/mysqli">mysqli</a> has to offer. The cover some of the basics of the extension and include code showing its use.
</p>
<blockquote>
Experienced developers eschew the original MySQL extension because of its abandoned status in PHP. Nascent web developers, however, may be completely oblivious to its dormant past and dying future. [...] It is therefore the intention of this two-part article to raise awareness among developers who still use the MySQL extension, inform them of its problems, and to help them switch over to an alternative extension.
</blockquote>
<p>
They start with a brief look at the "what's wrong" with the MySQL extension (including its upcoming deprecation). The article then gets into the basics of MySQLi and how to do things like make a connection and run a few queries. There's also a bit about prepared statements and the built-in ability to do "multi-queries" (complete with rollbacks).
</p>]]></description>
      <pubDate>Fri, 15 Feb 2013 11:13:29 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPClasses.org: Lately in PHP, Episode 32 - Zend Optimizer+ Cache in PHP 5.5 & MySQL 5.6]]></title>
      <guid>http://www.phpdeveloper.org/news/19150</guid>
      <link>http://www.phpdeveloper.org/news/19150</link>
      <description><![CDATA[<p>
On PHPClasses.org today they've posted the latest episode of their "Lately in PHP" podcast, <a href="http://www.phpclasses.org/blog/post/200--Zend-Optimizer-Cache-in-PHP-55-and-MySQL-56-Performance-Improvements--Lately-in-PHP-podcast-episode-32.html">Episode #32</a>, "Zend Optimizer+ Cache in PHP 5.5 and MySQL 5.6 Performance Improvements".
</p>
<blockquote>
MySQL 5.6 speed improvements and how it affects PHP applications was one of the main topics discussed by Manuel Lemos and Ernani Joppert on the episode 32 of the Lately in PHP podcast. They also commented on the eventual adoption of the Zend Optimizer+ as the PHP code caching extension that may be shipping with PHP 5.5 as alternative to APC, the implications of this to the PHP community.
</blockquote>
<p>
They also talk some about the switch of OpenSuSE/Fedora Linux to MariaDB MySQL, TDD in the Zurmo PHP Open Source CRM and using HTML5 animations. You can listen to this latest episode either through the <a href="http://www.phpclasses.org/blog/post/200--Zend-Optimizer-Cache-in-PHP-55-and-MySQL-56-Performance-Improvements--Lately-in-PHP-podcast-episode-32.html">in-page player</a>, by <a href="http://www.phpclasses.org/blog/post/200/file/162/name/Lately-In-PHP-32.mp3">downloading the mp3 directly</a> or <a href="http://www.youtube.com/watch?feature=player_embedded&v=lD6vEiUtpPo#!">watch the video</a> of the recording on YouTbue.
</p>]]></description>
      <pubDate>Thu, 07 Feb 2013 12:56:55 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Sherif Ramadan: How to Write an Operator Precedence Parser in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/19068</guid>
      <link>http://www.phpdeveloper.org/news/19068</link>
      <description><![CDATA[<p>
<i>Sherif Ramadan</i> has a post looking at <a href="https://sheriframadan.com/2013/01/how-to-write-an-operator-precedence-parser-in-php/">creating a better operator precedence parser</a> in PHP. <a href="https://github.com/srgoogleguy/Mphp/">His example</a> is a fully PHP implementation that takes equation strings and evaluates them to create the result.
</p>
<blockquote>
Operator precedence parsers are very simple on the surface. So don't feel in the least bit intimidated, because by the time you've read through this I hope to have you walk away with a solid foundation on how to write your very own operator precedence parser. The goal is to understand how to solve the problem of operator precedence parsing, and not necessarily to write your own parser. Learning how the problem can be solved is the most important thing to take away from this article.
</blockquote>
<p>
He starts with an introduction to the concepts behind "operator precedence" including processing order and grouping. He also mentions infix and postfix (RPN) notations for handling different formats of equations. He used the "Shunting-yard Algorithm" and how it relates to handling the different parts of the equation, one at a time, in the correct order. He rest of the post is dedicated to the details of the execution in the tool, including code examples and the tokenization of the strings passed into it.
</p>]]></description>
      <pubDate>Mon, 21 Jan 2013 11:21:22 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPClasses.org: Lately in PHP, Episode 31 - The Urge to Kill Older PHP Versions]]></title>
      <guid>http://www.phpdeveloper.org/news/19033</guid>
      <link>http://www.phpdeveloper.org/news/19033</link>
      <description><![CDATA[<p>
PHPClasses.org has <a href="http://www.phpclasses.org/blog/post/198-The-Urge-to-Kill-Older-PHP-Versions--Lately-in-PHP-podcast-episode-31.html">released their latest episode</a> of their "Lately in PHP" podcast series. This episode (#31) talks some about some of the changes happening in versions in PHP in the upcoming months.
</p>
<blockquote>
As PHP 5.5 is getting ready to be released in the next months, the end of line for PHP 5.3 is being planned, while the original MySQL extension is being deprecated in PHP 5.5 to be killed in a later version.
</blockquote>
<p>
You can listen to this latest episode either through the <a href="http://www.phpclasses.org/blog/post/198-The-Urge-to-Kill-Older-PHP-Versions--Lately-in-PHP-podcast-episode-31.html">in-page player</a>, by <a href="http://www.phpclasses.org/blog/post/198/file/158/name/Lately-In-PHP-31.mp3">downloading the mp3</a> or you can <a href="http://youtu.be/0DNpcozTbUk">watch the video</a> of the recorded Google Hangout of the taping.
</p>]]></description>
      <pubDate>Mon, 14 Jan 2013 10:58:16 -0600</pubDate>
    </item>
  </channel>
</rss>
