<?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>Sat, 25 May 2013 16:29:00 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Etsy Code as Craft: There and Back Again: Migrating Geolocation Data to GeoNames]]></title>
      <guid>http://www.phpdeveloper.org/news/19392</guid>
      <link>http://www.phpdeveloper.org/news/19392</link>
      <description><![CDATA[<p>
On the Etsy "Code as Craft" blog there's <a href="http://codeascraft.etsy.com/2013/03/26/there-and-back-again-migrating-geolocation-data-to-geonames/">a recent post</a> about their move to using the <a href="http://geonames.org/">GeoNames</a> service internally rather than the external, third-party API previously in use.
</p>
<blockquote>
People are passionate about where they live. At Etsy we need to keep track of lots of different locations, such as buyers' billing and shipping addresses and sellers' shop locations. As Etsy continues to expand internationally we wanted to provide better localization and translations for our location place names. We determined that the best way to effect this change was to move from using a closed location API provider to internal services backed by the open <a href="http://geonames.org/">GeoNames</a> data set.
</blockquote>
<p>
<a href="http://codeascraft.etsy.com/2013/03/26/there-and-back-again-migrating-geolocation-data-to-geonames/">The post</a> details some of the steps in the process including the mapping of the current data to the new structure (the script is <a href="https://github.com/etsy/geonames">available on github</a>). They talk about how they mapped their old data over (trial and error sometimes) and the creation of a database of "GeoNameIDs" for each customer in their records. They've also implemented a <a href="http://lucenerevolution.org/">Lucene/Solr</a> search for improved searching and auto-suggestion based on the user's location.
</p>]]></description>
      <pubDate>Mon, 01 Apr 2013 11:48:36 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Framework Blog: Zend Framework 1 is Migrating to Git!]]></title>
      <guid>http://www.phpdeveloper.org/news/19375</guid>
      <link>http://www.phpdeveloper.org/news/19375</link>
      <description><![CDATA[<p>
The Zend Framework project has announced a major move for the framework's development - the Zend Framework v1 repositories will be <a href="http://framework.zend.com/blog/2013-03-27-zf1-git-migration.html">moving from Subversion to Git</a> over the next year or so.
</p>
<blockquote>
Since its inception, Zend Framework 1 has used <a href="http://subversion.apache.org/">Subversion</a> for versioning. However, as we approach its end-of-life (which will occur 12-18 months from the time this post is written), and as our experience with ZF2 processes becomes more familiar, we -- the Zend team and the Community Review team -- feel that we can better support ZF1 via <a href="http://github.com/">GitHub</a>. As such, we will be migrating the ZF1 Subversion repository to GitHub this week. Please read on for details!
</blockquote>
<p>
<a href="http://framework.zend.com/blog/2013-03-27-zf1-git-migration.html">The post</a> details the steps that'll be taken during the process including the changing of the location of the "master" branch (and how to change svn to point to it) and the updates to the integration of the Dojo libraries. They also talk some about the "extras" repository and how things will work with the Issue Tracker and pull requests in the future. 
</p>
<blockquote>
The repository and issues migration is the first step in a series of planned migrations. We also plan to eventually migrate our wiki to GitHub; this will allow us to offload functionality from the main ZF website, and also consolidate all development-related functionality (other than the mailing list) in a central location.
</blockquote>]]></description>
      <pubDate>Thu, 28 Mar 2013 09:29:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: PHPFog is Coming to an End - But Don't Panic!]]></title>
      <guid>http://www.phpdeveloper.org/news/18807</guid>
      <link>http://www.phpdeveloper.org/news/18807</link>
      <description><![CDATA[<p>
If you're a PHPFog user, you know that they're discontinuing the service in favor of their <a href="http://appfog.com">AppFog</a> product. If you're looking to migrate over to this from PHPFog, you should check out <a href="http://phpmaster.com/phpfog-is-coming-to-an-end-but-dont-panic/">this new article</a> from PHPMaster.com with some of the differences between the two services.
</p>
<blockquote>
Have you heard <a href="http://phpfog.com">PHPFog</a> is coming to an end? No, well - it is. That's right, in a recent announcement on their mailing list, the company has said that PHPFog will be no more by the end of January, 2013. But if you're on their platform, don't panic! The new, combined platform may be even better than what you're accustomed to with them now.
</blockquote>
<p>
He talks about some of the things that are different including the technologies it employs, addons it provides, the differing deployment process and when teh final cut-off date is. He links to their own <a href="https://docs.appfog.com/migration#when-discontinued">migration guide</a> for most of the steps but mentions one specific change that might trip you up - the change to store connection information in the "VCAP_SERVICES" environment variable.
</p>]]></description>
      <pubDate>Tue, 27 Nov 2012 09:40:57 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Rob Morgan: Getting Started With Phinx]]></title>
      <guid>http://www.phpdeveloper.org/news/18627</guid>
      <link>http://www.phpdeveloper.org/news/18627</link>
      <description><![CDATA[<p>
<i>Rob Morgan</i> has a recent post showing you how to <a href="http://robmorgan.id.au/post/33558666279/getting-started-with-phinx">use Phinx</a>, a PHP-based database migration tool, to handle your database changes (both "up" and "down").
</p>
<blockquote>
Earlier this year I decided to open-source one of my personal software projects - <a href="http://phinx.org/">Phinx</a>. Phinx is a database migration tool (think Ruby on Rails ActiveRecord migrations) where can you describe all of your database transformations in pure PHP. I have used this tool for many of my consulting projects, however it still took a lot of effort to turn it into a re-usable product. In this tutorial I'm going to explain how to install Phinx and use it with a simple guestbook application.
</blockquote>
<p>
He uses <a href="https://github.com/robmorgan/guestbook-tutorial">a sample guestbook</a> project for his example, showing how to get it all installed and how to create a migration that adds a "posts" table. 
</p>]]></description>
      <pubDate>Thu, 18 Oct 2012 12:30:49 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Artisan and Laravel Migrations]]></title>
      <guid>http://www.phpdeveloper.org/news/18410</guid>
      <link>http://www.phpdeveloper.org/news/18410</link>
      <description><![CDATA[<p>
PHPMaster.com has continued their series about the <a href="http://laravel.com">Laravel</a> framework today with <a href="http://phpmaster.com/laravel-migrations/">this new tutorial</a> they show you how to use the command line tool Artisan to work with database migrations.
</p>
<blockquote>
For those who struggle with maintaining their database schema, or who have problems applying updates and often revert them, there is a solution. Laravel, the MVC framework which I wrote about previously, offers you migrations.
</blockquote>
<p>
On the surface, the migrations are simple sets of "up" and "down" methods that allow you to apply and remove the changes required for the migration. It also allows you to perform a "rollback" on the updates just made and a "reset" to clear out all changes and start over from the base. There's also a shortcut to help generate migration code from a configuration string.
</p>]]></description>
      <pubDate>Tue, 28 Aug 2012 08:38:08 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Stefan Koopmanschap: Data migration with Doctrine2]]></title>
      <guid>http://www.phpdeveloper.org/news/18269</guid>
      <link>http://www.phpdeveloper.org/news/18269</link>
      <description><![CDATA[<p>
In <a href="http://www.leftontheweb.com/message/Data_migration_with_Doctrine2">this latest post</a> to his site <i>Stefan Koopmanschap</i> shares a solution he's found to migrating data with Doctrine2 from an existing structure.
</p>
<blockquote>
A project that I'm working on right now required me to migrate data from the existing database to the new database and database structure. Since the application is built on top of Symfony2, I decided to write a <a href="http://symfony.com/doc/current/cookbook/console/console_command.html">Command</a> that would take care of the migration. I ran into an issue though: Doctrine2 insisted on creating new IDs where I wanted to keep the old one. The solution turned out to be really simple.
</blockquote>
<p>
The actual code for the Command is only a few lines long - it just turns off the "AUTO" strategy for each of your entities, making it ignore any IDs you have set on the entity already.
</p>]]></description>
      <pubDate>Wed, 25 Jul 2012 08:18:32 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Leaseweb Labs Blog: Migration to Symfony2 continued]]></title>
      <guid>http://www.phpdeveloper.org/news/17525</guid>
      <link>http://www.phpdeveloper.org/news/17525</link>
      <description><![CDATA[<p>
On the LeaseWeb Labs blog there's a continuation from a previous post about migrating your Symfony1 application over to Symfony2. In the <a href="http://phpdeveloper.org/news/17299">first part</a> of this series of posts, <i>Stefan Koopmanschap</i> talked about wrapping your code to make it work. In <a href="http://www.leaseweblabs.com/2012/02/migration-to-symfony2-continued/">this second post</a>, <i>Maurtis van der Schee</i> tackles two issues <i>Stefan</i> mentioned - performance problems and handling authorization/authentication.
</p>
<blockquote>
On December 21, 2011 Stefan Koopmanschap wrote an excellent article on this blog titled "Painless (well, less painful) migration to Symfony2." [...] We were very much inspired by his passionate elucidation and we were fully convinced of the urge to start migrating to Symfony2 as soon as possible. However, he also provided us with a "A word of caution" about 2 things: performance and authentication/authorization. This might get some people worried, but not us: it challenged us to find a solution for those two open issues.
</blockquote>
<p>
They explain why these two things are a problem and some of their solutions they've created - a .htaccess for routing and manually replicating the Symfony2 session in the Symfony1 code. Included in the post are the rewrite rules and code to make these two things happen (and a small configuration change to make them work).
</p>]]></description>
      <pubDate>Thu, 09 Feb 2012 11:51:59 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Dave Marshall's Blog: Phpmig - Simple migrations for php]]></title>
      <guid>http://www.phpdeveloper.org/news/17072</guid>
      <link>http://www.phpdeveloper.org/news/17072</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Dave Marshall</i> shares a <a href="http://davedevelopment.co.uk/2011/11/01/phpmig-simple-migrations-for-php.html">homegrown migration tool</a> he's created to help make database migrations a simpler task - <a href="http://github.com/davedevelopment/phpmig">phpmig</a>.
</p>
<blockquote>
I've previously blogged about <a href="http://davedevelopment.co.uk/how-to-simple-database-migrations-with-phing-and-dbdeploy.html">migrations with phing and dbdeploy</a> and also <a href="http://davedevelopment.co.uk/notes-from-porting-ruby-to-php.html">porting ActiveRecord::Migrations to PHP</a>, now here I am again blogging about yet another way of doing migrations in PHP projects. Only maybe this time it's different, maybe this time I've found a way I'm happy with...? <a href="http://github.com/davedevelopment/phpmig">Phpmig</a> is a simple migrations system that was written to be easily adopted regardless of the framework or libraries you are using. It requires a little bit of setting up, but if you know you should be using migrations, you're probably more than capable.
</blockquote>
<p>
He's worked up a sample application to show you how to get things set up and working - a basic <a href="http://silex.sensiolabs.org/">Silex</a>-based application. Phpmig is used to create a basic bootstrap for the deployment that includes the use of <a href="https://github.com/fabpot/Pimple">Pimple</a> for dependency injection and a command-line interface to generate a migration skeleton class for the up/down methods. The source for phpmig can be <a href="https://github.com/davedevelopment/phpmig">found on github</a>.
</p>]]></description>
      <pubDate>Tue, 01 Nov 2011 13:19:02 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Chris Hartjes' Blog: Smarter DB Migrations using Zend Framework and Doctrine 1.2]]></title>
      <guid>http://www.phpdeveloper.org/news/15775</guid>
      <link>http://www.phpdeveloper.org/news/15775</link>
      <description><![CDATA[<p>
<i>Chris Hartjes</i>, after finally figuring out an issue with database migrations with Doctrine on a Zend Framework application, has <a href="http://www.littlehart.net/atthekeyboard/2011/01/19/smarter-db-migrations-using-zend-framework-and-doctrine-1-2/">posted about the process</a> to his blog today. As he notes:
</p>
<blockquote>
This posting is a lesson on the value of actually looking at the source code of a third-party library when you are trying to figure something out...
</blockquote>
<p>
His problem wasn't with the features of Doctrine and how easy it made to automate things in his environments (continuous integration). His issue was that Doctrine wanted to run all of <a href="http://www.doctrine-project.org/projects/orm/1.2/docs/manual/migrations/en">the migrations</a> every time it was executed. Upon closer inspection, he found the key - a migration_version table in his database that held current migration information. He includes a simple Zend Framework-based script he's now using get the latest value from that table and execute only the migrations after that. The migrations are executed in  order - he recommends using a timestamp or formatted date on the filename to set the order.
</p>
]]></description>
      <pubDate>Thu, 20 Jan 2011 10:11:39 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: Database Version Control]]></title>
      <guid>http://www.phpdeveloper.org/news/15720</guid>
      <link>http://www.phpdeveloper.org/news/15720</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today <i>Harrie Verveer</i> has a new post looking at <a href="http://techportal.ibuildings.com/2011/01/11/database-version-control/">database version control</a> - one of the more difficult topics for development groups - and some of the technology that can be used to help make it a bit simpler.
</p>
<blockquote>
Database version control is something that most developers have to deal with regularly, yet only a few have actually thought about what solution might be best for them. Most people have a solution that sort of works for them, but when you ask them about the subject they are pretty convinced that there must be some better way to manage database changes, they're just not entirely sure what that solution is - but the silver bullet must be out there somewhere, right?
</blockquote>
<p>
He starts where most developers start - their own custom script. It usually will take in a series of patch files and apply them one by one. In this case a "patch level" is stored somewhere (file/database) and is checked when the deployment is done. He points out a few issues with this method including patch naming issues and branching. Taking a step up the technology tree, he looks at other solutions like Phing+DBDeploy, Liquibase, and Doctrine migrations to try to help you find your project's "silver bullet".
</p>]]></description>
      <pubDate>Tue, 11 Jan 2011 12:42:08 -0600</pubDate>
    </item>
  </channel>
</rss>
