<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-36428292</id><updated>2024-03-14T08:31:23.757+00:00</updated><category term="examples"/><category term="release announcement"/><category term="documentation"/><title type='text'>P-dd</title><subtitle type='html'>P-dd is a PHP library for creating dynamic relational database documentation, in a number of forms, for an arbitrary database.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36428292.post-149393468090020956</id><published>2007-03-27T22:20:00.001+01:00</published><updated>2007-03-27T22:20:40.677+01:00</updated><title type='text'>[p-dd commit] r77 - in trunk: . Classes Tests</title><content type='html'>Author: bobalicious.bob&lt;br&gt;Date: Tue Mar 27 14:19:35 2007&lt;br&gt;New Revision: 77&lt;p&gt;Added:&lt;br&gt;   trunk/Tests/Test_Filter_Not.php&lt;br&gt;Modified:&lt;br&gt;   trunk/Classes/FileHandler.php&lt;br&gt;   trunk/TestSuite.php&lt;br&gt;   trunk/Tests/Test_Filter_And.php&lt;br&gt;   trunk/Tests/Test_Filter_Or.php&lt;p&gt;Log:&lt;br&gt;Finished tests for the filter gates&lt;br&gt;Generate the list of tests in the test suite</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/149393468090020956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/149393468090020956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/149393468090020956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/149393468090020956'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/03/p-dd-commit-r77-in-trunk-classes-tests.html' title='[p-dd commit] r77 - in trunk: . Classes Tests'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-8993736805900815841</id><published>2007-03-24T18:35:00.001+00:00</published><updated>2007-03-24T18:37:15.925+00:00</updated><title type='text'>[p-dd commit] r76 - in trunk: . Classes/Datasources/Filters Tests</title><content type='html'>Author: bobalicious.bob&lt;br&gt;Date: Sat Mar 24 11:34:55 2007&lt;br&gt;New Revision: 76&lt;p&gt;Added:&lt;br&gt;   trunk/Tests/Test_Filter_And.php&lt;br&gt;   trunk/Tests/Test_Filter_Or.php&lt;br&gt;   trunk/Tests/Test_Filter_TableEndsWith.php&lt;br&gt;   trunk/Tests/Test_Filter_TableStartsWith.php&lt;br&gt;Modified:&lt;br&gt;   trunk/Classes/Datasources/Filters/Filter_TableEndsWith.php&lt;br&gt;   trunk/Classes/Datasources/Filters/Filter_TableStartsWith.php&lt;br&gt;   trunk/TestSuite.php&lt;p&gt;Log:&lt;br&gt;Added tests for some of the Filters / Gates&lt;br&gt;(Really it&amp;#39;s just a way of learning the Mock Object usage properly... ;-) )</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/8993736805900815841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/8993736805900815841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/8993736805900815841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/8993736805900815841'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/03/p-dd-commit-r76-in-trunk.html' title='[p-dd commit] r76 - in trunk: . Classes/Datasources/Filters Tests'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-6050023891513138852</id><published>2007-01-28T18:46:00.001+00:00</published><updated>2007-01-28T18:46:54.298+00:00</updated><title type='text'>[p-dd commit] r75 - in trunk: . Classes/Xml Tests</title><content type='html'>Author: bobalicious.bob&lt;br&gt;Date: Sun Jan 28 10:46:30 2007&lt;br&gt;New Revision: 75&lt;p&gt;Added:&lt;br&gt;   trunk/Tests/Test_XmlDocument.php&lt;br&gt;   trunk/Tests/Test_XmlParser.php&lt;br&gt;Modified:&lt;br&gt;   trunk/Classes/Xml/XmlElement.php&lt;br&gt;   trunk/Classes/Xml/XmlParser.php&lt;br&gt;   trunk/TestSuite.php&lt;br&gt;   trunk/Tests/Test_XmlElement.php&lt;p&gt;Log:&lt;br&gt;Completed unit test for XmlElement, and added unit tests for XmlDocument and XmlParser</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/6050023891513138852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/6050023891513138852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/6050023891513138852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/6050023891513138852'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/01/p-dd-commit-r75-in-trunk-classesxml.html' title='[p-dd commit] r75 - in trunk: . Classes/Xml Tests'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-8814717487107717458</id><published>2007-01-28T14:08:00.001+00:00</published><updated>2007-01-28T14:08:47.437+00:00</updated><title type='text'>[p-dd commit] r74 - in trunk: . Classes/Xml Tests</title><content type='html'>Author: bobalicious.bob&lt;br&gt;Date: Sun Jan 28 06:08:20 2007&lt;br&gt;New Revision: 74&lt;p&gt;Added:&lt;br&gt;   trunk/Tests/Test_XmlElement.php&lt;br&gt;Modified:&lt;br&gt;   trunk/Classes/Xml/XmlElement.php&lt;br&gt;   trunk/TestSuite.php&lt;p&gt;Log:&lt;br&gt;Started to produce unit test for XmlElement</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/8814717487107717458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/8814717487107717458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/8814717487107717458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/8814717487107717458'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/01/p-dd-commit-r74-in-trunk-classesxml.html' title='[p-dd commit] r74 - in trunk: . Classes/Xml Tests'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-1343348974152364780</id><published>2007-01-05T15:56:00.000+00:00</published><updated>2007-01-06T13:45:21.583+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="release announcement"/><title type='text'>P-dd 0.1.1 released</title><content type='html'>Version 0.1.1 of P-dd has been released.&lt;br /&gt;&lt;br /&gt;This version contains a minor bug fix to remove a &#39;Runtime call by reference&#39; notice.&lt;br /&gt;&lt;br /&gt;More importantly it marks the dawning of the &#39;download&#39; entry on Google code for the source-code :-)&lt;br /&gt;&lt;br /&gt;You can download this version here: &lt;a href=&quot;http://p-dd.googlecode.com/files/P-dd-0-1-1.zip&quot;&gt;P-dd 0.1.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;technoratitag&quot;&gt;Technorati Tags: &lt;a href=&quot;http://www.technorati.com/tags/software&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/database&quot; rel=&quot;tag&quot;&gt;database&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/diagram&quot; rel=&quot;tag&quot;&gt;diagram&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dot&quot; rel=&quot;tag&quot;&gt;dot&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dotty&quot; rel=&quot;tag&quot;&gt;dotty&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/neato&quot; rel=&quot;tag&quot;&gt;neato&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/er&quot; rel=&quot;tag&quot;&gt;er&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/open+source&quot; rel=&quot;tag&quot;&gt;open+source&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Oracle&quot; rel=&quot;tag&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Postgres&quot; rel=&quot;tag&quot;&gt;Postgres&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/MySql&quot; rel=&quot;tag&quot;&gt;MySql&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Robert+Baillie&quot; rel=&quot;tag&quot;&gt;Robert+Baillie&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/documentation&quot; rel=&quot;tag&quot;&gt;documentation&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/1343348974152364780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/1343348974152364780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/1343348974152364780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/1343348974152364780'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/01/p-dd-011-released.html' title='P-dd 0.1.1 released'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-5503100592860777282</id><published>2007-01-05T13:38:00.000+00:00</published><updated>2007-01-05T13:50:07.786+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="examples"/><title type='text'>Simple ER Diagram Example</title><content type='html'>Being able to simply create an ER diagram is one of the main reasons I had for starting this project, and with that in mind I figure I should show just how simple it is to do so.&lt;br /&gt;&lt;br /&gt;In order to run this you would need to have Graphviz&#39;s Neato installed on the web server... though once that&#39;s done, this is the sum total of the code you need to use the TestDatasource and produce a full ER diagram like that shown below:&lt;br /&gt;&lt;br /&gt;&lt;pre style=&quot;overflow:auto; font-size: 8pt;&quot;&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;P-dd: A simple example outputting the default DOT generated diagram using the TestDatasource&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;require_once( &#39;include_package.php&#39; );&lt;br /&gt;&lt;br /&gt;include_package( &#39;Datasources&#39; );&lt;br /&gt;include_package( &#39;DatabaseModel&#39; );&lt;br /&gt;include_package( &#39;Renderers&#39;, true );&lt;br /&gt;&lt;br /&gt;$oFactory = new DatabaseFactory(  new TestDatasource() );&lt;br /&gt;$oDatabase = $oFactory-&amp;gt;ConstructDatabase();&lt;br /&gt;&lt;br /&gt;$oImageGenerator = new DotImageGenerator( DotDatabaseRenderer::Render( new DotRendererConfiguration(), $oDatabase ) );&lt;br /&gt;$oImageGenerator-&amp;gt;GenerateImageFile( &#39;Gif&#39;, &#39;ExampleImage.gif&#39; );&lt;br /&gt;&lt;br /&gt;echo( HtmlTag::Image( &#39;ExampleImage.gif&#39;, &#39;Dot generated diagram (using NEATO)&#39;) );&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/94264415@N00/346596646/&quot; title=&quot;Example ER diagram&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/137/346596646_e9a6d93695_m.jpg&quot; width=&quot;240&quot; height=&quot;114&quot; alt=&quot;ExampleImage&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;technoratitag&quot;&gt;Technorati Tags: &lt;a href=&quot;http://www.technorati.com/tags/software&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/database&quot; rel=&quot;tag&quot;&gt;database&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/diagram&quot; rel=&quot;tag&quot;&gt;diagram&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dot&quot; rel=&quot;tag&quot;&gt;dot&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dotty&quot; rel=&quot;tag&quot;&gt;dotty&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/neato&quot; rel=&quot;tag&quot;&gt;neato&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/er&quot; rel=&quot;tag&quot;&gt;er&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/open+source&quot; rel=&quot;tag&quot;&gt;open+source&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Oracle&quot; rel=&quot;tag&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Postgres&quot; rel=&quot;tag&quot;&gt;Postgres&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/MySql&quot; rel=&quot;tag&quot;&gt;MySql&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Robert+Baillie&quot; rel=&quot;tag&quot;&gt;Robert+Baillie&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/documentation&quot; rel=&quot;tag&quot;&gt;documentation&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/5503100592860777282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/5503100592860777282' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/5503100592860777282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/5503100592860777282'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/01/simple-er-diagram-example.html' title='Simple ER Diagram Example'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm1.static.flickr.com/137/346596646_e9a6d93695_t.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-2373753648734419198</id><published>2007-01-05T13:26:00.000+00:00</published><updated>2007-01-05T13:32:28.964+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="examples"/><title type='text'>Viewer Screenshot</title><content type='html'>Whilst the primary purpose of the project is to create a library, rather than an application, there is an application in the P-dd source code.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/94264415@N00/346402754/&quot; title=&quot;P-dd Viewer Example screenshot&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/128/346402754_ef9ebc2220_m.jpg&quot; width=&quot;230&quot; height=&quot;240&quot; alt=&quot;P-dd Viewer Example screenshot&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Able to connect to an Oracle database and produce an interface for navigating through the schema, it should be seen as an example of how easy it is to create applications using the library.&lt;br /&gt;&lt;br /&gt;The app consists of a single HTML / CSS / PHP file of around 300 lines (including comments).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;technoratitag&quot;&gt;Technorati Tags: &lt;a href=&quot;http://www.technorati.com/tags/software&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/database&quot; rel=&quot;tag&quot;&gt;database&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/diagram&quot; rel=&quot;tag&quot;&gt;diagram&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dot&quot; rel=&quot;tag&quot;&gt;dot&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dotty&quot; rel=&quot;tag&quot;&gt;dotty&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/neato&quot; rel=&quot;tag&quot;&gt;neato&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/er&quot; rel=&quot;tag&quot;&gt;er&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/open+source&quot; rel=&quot;tag&quot;&gt;open+source&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Oracle&quot; rel=&quot;tag&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Postgres&quot; rel=&quot;tag&quot;&gt;Postgres&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/MySql&quot; rel=&quot;tag&quot;&gt;MySql&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Robert+Baillie&quot; rel=&quot;tag&quot;&gt;Robert+Baillie&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/documentation&quot; rel=&quot;tag&quot;&gt;documentation&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/2373753648734419198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/2373753648734419198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/2373753648734419198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/2373753648734419198'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2007/01/viewer-screenshot.html' title='Viewer Screenshot'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm1.static.flickr.com/128/346402754_ef9ebc2220_t.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36428292.post-2712828104331936350</id><published>2006-12-31T17:58:00.000+00:00</published><updated>2006-12-31T18:25:21.136+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><category scheme="http://www.blogger.com/atom/ns#" term="release announcement"/><title type='text'>P-dd 0.1 finally released</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;Welcome to the world of P-dd - The PHP Database Documentor.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So what is it?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Put simply, it&#39;s a library of PHP classes that allow for the easy generation of documentation from a set of database sources.&lt;br /&gt;&lt;br /&gt;Put even more simply, it&#39;s yet another open source project...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is the project aim?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To make it easy to dynamically create documentation on the structure of relational database based systems regardless of the number of, flavour and capabilities of those systems or the type of documentation required&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How does the architecture of the library allow for that?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The library is split into three main components:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Datasources&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Database model&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Renderers&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The Datasources are those components concerned with the collection of raw data from the actual datasources.  For example, and OracleDatasource class exists that is aware of how to interrogate an Oracle database for its structure.  An XmlDatasource exists that can interpret an XML document that contains a relational database specification.  All datasources conform to the same interface (currently described by the TestDatasource) making them interchangeable.&lt;br /&gt;&lt;br /&gt;The Database Model is a class based representation of the Table / Column / Key structures that are ubiquitous within the relational database model.  A factory exists that can take any of the datasources and produce a complete database model.&lt;br /&gt;&lt;br /&gt;The Renderers are capable of taking a formed Database Model and rendering it in that renderer&#39;s chosen form.&lt;br /&gt;&lt;br /&gt;The structure is such that it is easy to add new datasources, as long as they support the minimum structure required of the model.  It is also simple to produce new renderers, as they require only knowledge of the generic database model, and no knowledge of the sources themselves.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So what&#39;s available in this version?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;A database model that consists of:&lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;Tables&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Columns&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Primary Keys&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;Foreign Keys&lt;/li&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;The database model can be created from the following sources:&lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;Oracle&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;XML File&lt;/li&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;The model can be rendered into the following formats:&lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;HTML&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;XML&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;&lt;a href=&quot;http://www.graphviz.org&quot; target=&quot;_BLANK&quot;&gt;Graphviz Neato Diagram&lt;/a&gt; (producing an ER diagram)&lt;/li&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There are also lots of other little goodies in there such as datasource independant filters, a datasource caching system that limits the round trips to the database and a plethora of examples showing how components can be used as well as a simple Oracle database viewer application to show off what can be possible with just a small amount of work.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;And what&#39;s the plan for the future&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The idea is that, over time, database sources will be added that will allow for the collection of meta-data from all the major database players (Oracle / MySql / Postgres / etc) and produce documentation in most of the popular forms (HTML / XML / RTF / PDF / etc) including ER diagrams.&lt;br /&gt;&lt;br /&gt;It is also recognised that in the future it is desirable to take the library into a more analysis role.  For example - inferring foreign keys that are not explicitly stated, either by examining the table structures or the data within those tables.  Though that is very much a longer term plan.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OK, so where is it?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The source code can be found on Google Code here: &lt;a href=&quot;http://code.google.com/p/p-dd/&quot; target=&quot;_BLANK&quot;&gt;http://code.google.com/p/p-dd/&lt;/a&gt; the current release tag being &lt;b&gt;P-dd-0-1-0&lt;/b&gt;&lt;br /&gt;More information of the plans for the project can be found on Backpack here: &lt;a href=&quot;http://bobalicious.backpackit.com/page/800325&quot; target=&quot;_BLANK&quot;&gt;http://bobalicious.backpackit.com/page/800325&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So what now?&lt;/b&gt;&lt;br /&gt;Well, I hope that some of you people will pick it up and start providing feedback... please do so.  But regardless, this remains a little bit of a vanity project anyway so I&#39;m going to keep going with it and see where it takes me even if no-one uses it. Isn&#39;t that the life of most open source projects anyway ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;technoratitag&quot;&gt;Technorati Tags: &lt;a href=&quot;http://www.technorati.com/tags/software&quot; rel=&quot;tag&quot;&gt;software&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/database&quot; rel=&quot;tag&quot;&gt;database&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/diagram&quot; rel=&quot;tag&quot;&gt;diagram&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dot&quot; rel=&quot;tag&quot;&gt;dot&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/dotty&quot; rel=&quot;tag&quot;&gt;dotty&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/neato&quot; rel=&quot;tag&quot;&gt;neato&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/er&quot; rel=&quot;tag&quot;&gt;er&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/open+source&quot; rel=&quot;tag&quot;&gt;open+source&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Oracle&quot; rel=&quot;tag&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Postgres&quot; rel=&quot;tag&quot;&gt;Postgres&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/MySql&quot; rel=&quot;tag&quot;&gt;MySql&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/Robert+Baillie&quot; rel=&quot;tag&quot;&gt;Robert+Baillie&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tags/documentation&quot; rel=&quot;tag&quot;&gt;documentation&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-dd.blogspot.com/feeds/2712828104331936350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36428292/2712828104331936350' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/2712828104331936350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36428292/posts/default/2712828104331936350'/><link rel='alternate' type='text/html' href='http://p-dd.blogspot.com/2006/12/p-dd-01-finally-released.html' title='P-dd 0.1 finally released'/><author><name>Rob Baillie</name><uri>http://www.blogger.com/profile/06513796097645814224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJKWDfU-frt3gi_ubtgJ8msvcKcp6ChPvxN_uLMCR-FqygXX-IabdD7vmbQ3RHXnwvmQRPaiXacC6CoIfaYcyh0hGdV0PQzbjFaqf_ECJjuD2JzQVdrINY6YBtjgISt_4/s113/Rob+Baillie.png'/></author><thr:total>3</thr:total></entry></feed>