<?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>Sun, 19 May 2013 02:21:29 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Matt Frost: Agent of Change: Part 2 Presentation]]></title>
      <guid>http://www.phpdeveloper.org/news/19135</guid>
      <link>http://www.phpdeveloper.org/news/19135</link>
      <description><![CDATA[<p>
Following up on his <a href="http://phpdeveloper.org/news/19005">previous post</a> about being an "agent of change" in your organization (work, open source project, etc) <i>Matt Frost</i> has posted <a href="http://shortwhitebaldguy.com/blog/2013/01/agent-of-change-part-2-presentation">his second part</a> of the series focusing on the presentation of your ideas.
</p>
<blockquote>
In Part 2 we're going to talk about presentation of the pitch you put together for this change. It's important that your pitch be well researched and in some regards provable, as the Agent of Change the responsibility lies with you to prove the value of your idea. As we touched on in Part 1, a well thought out plan is going to go a long way in breaking down the barriers that make change difficult to take hold.
</blockquote>
<p>
He makes a strong point that you need to identify the problem you're trying to solve (and what solution you're wanting to propose) clearly before trying to present it to a listening audience. He recommends quantifying your solution in terms everyone can understand like "hours of work" or cost. He recommends coming up with a short "elevator pitch" version to entice and the longer version to fill in the gaps.
</p>
<blockquote>
You've got slides, documentation, statistics and loads of other good information that is going to benefit your development process, sales people in particular are looking for that jewel that helps set your organization apart; you've got that jewel!
</blockquote>]]></description>
      <pubDate>Tue, 05 Feb 2013 09:20:35 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: How to Write Code That Embraces Change]]></title>
      <guid>http://www.phpdeveloper.org/news/19132</guid>
      <link>http://www.phpdeveloper.org/news/19132</link>
      <description><![CDATA[<p>
On NetTuts.com today there's a great new article about how to <a href="http://net.tutsplus.com/tutorials/how-to-write-code-that-embraces-change/">write code that embraces change</a> and can be easily updated and reconfigured due to a decoupled nature and use of good OOP concepts.
</p>
<blockquote>
Writing code, which is easy to change is the Holy Grail of programming. Welcome to programming nirvana! But things are much more difficult in reality: source code is difficult to understand, dependencies point in countless directions, coupling is annoying, and you soon feel the heat of programming hell. In this tutorial, we will discuss a few principles, techniques and ideas that will help you write code that is easy to change.
</blockquote>
<p>
He covers some of the good OOP principles to think about when developing - like cohesion, orthogonality and coupling (via class methods, polymorphism, dependency injection or interfaces). He spends some time looking at the <a href="http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)">SOLID</a> development principles and how you can implement each of them in some sample code. He also talks some about high level design and how the separation of concerns can help make your code easier to maintain and change.
</p>]]></description>
      <pubDate>Mon, 04 Feb 2013 13:18:58 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Matt Frost: Agent of Change: Part 1 Preparation]]></title>
      <guid>http://www.phpdeveloper.org/news/19005</guid>
      <link>http://www.phpdeveloper.org/news/19005</link>
      <description><![CDATA[<p>
<i>Matt Frost</i> has posted <a href="http://shortwhitebaldguy.com/blog/2012/12/agent-of-change-preparation">the first part</a> of a series he's writing up about being an "Agent of Change" in your development organization with recommendations on how you can make changes for the better happen. In this first article, he looks at working up "the pitch" for new technology and practices.
</p>
<blockquote>
We all to make changes that make our jobs easier, so if your change isn't meeting a need or helping to ease a pain point, it's probably not the right change. [...] Find something that makes your job harder or less enjoyable, there's a pretty good chance that you aren't the only one.
</blockquote>
<p>
He recommends doing plenty of research before making your recommendations, especially if it's a "we should be doing, but don't know how to" kind of improvement. He uses test-driven development in his examples, with part of his pitch being that it reduces the number of bugs that make it into production. 
</p>
<blockquote>
When plans are well thought-out and researched, the element of risk that others perceive tends to dwindle. [...] It's not about pointing out the faults of others in the organization or assigning blame, it's about learning and making positive changes from the lessons you've learned.
</blockquote>]]></description>
      <pubDate>Tue, 08 Jan 2013 09:57:35 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: CakePHP 2.0 Released (with some Major Changes)]]></title>
      <guid>http://www.phpdeveloper.org/news/17027</guid>
      <link>http://www.phpdeveloper.org/news/17027</link>
      <description><![CDATA[<p>
The Bakery (a CakePHP site) has <a href="http://bakery.cakephp.org/articles/lorenzo/2011/10/16/cakephp_2_0_released">announced the release of CakePHP 2.0</a>, a major shift in the framework with some very large changes to bring it up to the level of other full-stack frameworks currently offered for PHP.
</p>
<blockquote>
The CakePHP core team is very exited to announce a major jump in the version numbering. CakePHP 2.0 stable is out! we have put endless hours into this release and great ideas have made it into the the framework for this version. [...] The overall CakePHP ecosystem has also been improved. [...] A huge thanks to all involved in terms of both contributions through commits, tickets, documentation edits, and otherwise contribute to the framework. Without you there would be no CakePHP.
</blockquote>
<p>Some huge changes have happened in this release including:</p>
<ul>
<li>Dropping PHP4 support
<li>Use of more native PHP functions
<li>PSR-0 compliance
<li>Object injection for libraries/components/helpers/etc
<li>Console tools completely rebuilt
<li>A move to PHPUnit tests (away from SimpleUnit)
<li>HTML support in form helpers
<li>Lazy-loading on just about everything making the overall experience faster
<li>Several new plugins like: DebugKit, Datasources, MongoDb, Migrations and AclExtras
</ul>
<p>
They've created a few resources to help you get started with this new version including a <a href="http://book.cakephp.org/2.0/en/">new version of the book</a>, a <a href="http://tv.cakephp.org/video/CakeFoundation/2011/10/06/ch-ch-anges_cakephp_2_0_-_by_mark_story">screencast</a> and a <a href="http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html">migration guide</a>.
</p>]]></description>
      <pubDate>Fri, 21 Oct 2011 11:03:05 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[rooJSolutions Blog: Watch-out PHP 5.3.7+ is about.. and the is_a() / __autoload() mess.]]></title>
      <guid>http://www.phpdeveloper.org/news/16810</guid>
      <link>http://www.phpdeveloper.org/news/16810</link>
      <description><![CDATA[<p>
New from the rooJSolutions blog there's a post pointing out an issue that PHP 5.3.7 has broken the <a href="http://php.net/is_a">is_a</a> functionality in a lot of cases. <a href="http://roojs.com/index.php/View/242/.html">The post</a> talks some about what's broken and how you can work around it if you're effected.
</p>
<blockquote>
The key issue was that 5.3.7 accidentally broke is_a() for a reasonably large number of users. Unfortunately the fixup release 5.3.8 did not address this 'mistake', and after a rather fruitless exchange I gave up trying to persuade the group (most people on mailing list), that reverting the change was rather critical (at least pierre supported reverting it in the 5.3.* series).
</blockquote>
<p>
This new issue was causing some strange errors to pop up in his code because of a parameter type change in the <a href="http://php.net/is_a">is_a</a> call, updating the first parameter to be an object instead of a class name. The is_a() call sends its requests to __autoload in some cases and the string->object mismatch of those parameters causes errors to be thrown. His workaround is, in your checking, just be sure to call an <a href="http://php.net/is_object">is_object</a> first before passing things off to be is_a() checked and autoloaded.
</p>]]></description>
      <pubDate>Fri, 02 Sep 2011 10:43:24 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Sameer Borate's Blog: Checking your site for malicious changes]]></title>
      <guid>http://www.phpdeveloper.org/news/16693</guid>
      <link>http://www.phpdeveloper.org/news/16693</link>
      <description><![CDATA[<p>
<i>Sameer Borate</i>, in the wake of having security issues with his site, has <a href="http://www.codediesel.com/security/checking-your-site-for-malicious-changes">posted a hint</a> you could use to help detect when something has changed in important files in your application by checking their hash.
</p>
<blockquote>
Today a couple of hours back my site got compromised. Not much changes to the code, but the .htacces was changed and some code [...] was added to the .htaccess file, which redirected the traffic coming from search engines to a malware site. It has now been removed and to prevent any such changes to the .htaccess file in the future, I've written a small php script that compares the hash (SHA1) of the two major files that usually get compromised and compare them to the one originally stored. 
</blockquote>
<p>
It's not a preventative measure by any means, but it can help you keep track of if something's changed. Several issues have popped up in the major blogging engines that allow for changes to be made directly to files. These changes result in the <a href="http://php.net/sha1_file">sha hash</a> to be different and can be used to trigger a security alert. His sample code shows a basic call to <a href="http://php.net/mail">mail</a> an alert, but it could be as complex as you'd like (possibly even logging to a database or the like).
</p>]]></description>
      <pubDate>Tue, 09 Aug 2011 10:04:25 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: Dutch PHP Conference - Important update: Conference Social Location has Changed!]]></title>
      <guid>http://www.phpdeveloper.org/news/16283</guid>
      <link>http://www.phpdeveloper.org/news/16283</link>
      <description><![CDATA[<p>
If you're attending this year's <a href="http://phpconference.nl">Dutch PHP Conference</a>, they've just posted an <a href="http://www.phpconference.nl/home/important-update-location-conference-social-changed/">important announcement about the conference social</a>:
</p>
<blockquote>
The conference social will now take place at a venue called <a href="http://www.clubnl.nl/">ClubNL</a>, which is also in central Amsterdam and within easy walk from the Amsterdam main train station. Please remember to hold on to your conference badge, as you will need it to gain access to the event. For more details check out the updated <a href="http://www.phpconference.nl/social/">social</a> page on our website. We are hoping to see you all there!
</blockquote>
<p>
There's still time for you to get your tickets to this great event happening in a few weeks (May 19th-21st) in Amsterdam - full event tickets run 695 Euro and the single-day tickets (just tutorial or just conference day) are 375 Euro. <a href="http://dpc11.paydro.net/">Get yours today!</a>
</p>]]></description>
      <pubDate>Mon, 02 May 2011 13:40:28 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Johannes Schluter's Blog: Changes in PHP trunk: No more extension for sqlite version 2]]></title>
      <guid>http://www.phpdeveloper.org/news/15471</guid>
      <link>http://www.phpdeveloper.org/news/15471</link>
      <description><![CDATA[<p>
<i>Johannes Schluter</i> has a <a href="http://schlueters.de/blog/archives/147-Changes-in-PHP-trunk-No-more-extension-for-sqlite-version-2.html">quick new post</a> to his blog today talking about parts of the sqllite extension that will be dropped from the core - the current sqlite_* methods and the pdo_sqlite driver.
</p>
<blockquote>
The issue there is that this depends on the SQLite 2 library which isn't supported by upstream anymore for a few years. It was a logical step therefore to remove this extension from PHP trunk. The support for the <a href="http://php.net/sqlite3">sqlite3</a> extension and the <a href="http://php.net/manual/en/ref.pdo-sqlite.php">PDO_sqlite driver</a> (same link as above, read it carefully), which use version 3 of the library, are continued.
</blockquote>
<p>
The change probably won't be happening in any of the PHP 5.3.x releases but should becoming in PHP 5.4 so, as he advises, you might need to rebuild your database file and change your application to correct things for the changes.
</p>]]></description>
      <pubDate>Mon, 22 Nov 2010 13:49:05 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Vid Luther's Blog: Changing MySQL storage engine for one table in your Propel/Symfony project]]></title>
      <guid>http://www.phpdeveloper.org/news/13297</guid>
      <link>http://www.phpdeveloper.org/news/13297</link>
      <description><![CDATA[<p>
<i>Vid Luther</i> has <a href="http://www.phpcult.com/blog/2009/09/changing-mysql-storage-engine-for-one-table-in-propel-symfony/">a new post</a> to his blog showing how to switch the storage engine only one (or any number of individual tables) in your MySQL-backed Propel/Symfony project.
</p>
<blockquote>
I need one MyISAM table in my schema, I'm using Symfony 1.2 and Propel 1.3. As flexible as Symfony and it's YAML files are, Propel currently doesn't allow you to change the storage engine on the fly. [...] So, the next best thing to do now is to have it so that when Symfony runs propel:insert-sql, I can piggyback my own SQL to it. Luckily, this is possible, and it's <a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/HowTos/AdditionalSQLFiles">explained here</a>.
</blockquote>
<p>
He gives an example of how he's doing it - making a simple alter table script, putting it into a SQL file and pushing it out into the project's setup via a "propel:insert:sql" command.
</p>]]></description>
      <pubDate>Tue, 29 Sep 2009 08:26:15 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Derick Rethans' Blog: Variable tracing with Xdebug]]></title>
      <guid>http://www.phpdeveloper.org/news/12206</guid>
      <link>http://www.phpdeveloper.org/news/12206</link>
      <description><![CDATA[<p>
<i>Derick Rethans</i> has <a href="http://derickrethans.nl/variable_tracing_with_xdebug.php">made a quick post</a> about an update he's made to the <a href="http://xdebug.de">XDebug</a> <a href="http://xdebug.org/docs/execution_trace">function traces</a> to add in information on variable modifications.
</p>
<blockquote>
After I had a quick look at the feasibility of this feature I spend some time on implementing it for Xdebug's HEAD branch that is going to become Xdebug 2.1. Variable modification tracing can be enabled by setting the php.ini xdebug.collect_assignments setting to 1. Of course this can also be done in either .htaccess or by using ini_set(). This setting requires general execution tracing to be enabled as well and it's only available for human readable trace files (the default format). 
</blockquote>
<p>
He gives examples of how two example scripts would be logged to the trace file - one inside of a basic function and another showing updates to the properties on a class.
</p>]]></description>
      <pubDate>Wed, 25 Mar 2009 11:16:52 -0500</pubDate>
    </item>
  </channel>
</rss>
