<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Weez.com &#187; Approach</title>
	<atom:link href="http://www.weez.com/tag/approach/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.weez.com</link>
	<description>Solving everyday practical LAMP problems... one at a time</description>
	<lastBuildDate>Sat, 11 Feb 2012 03:24:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Robert Hodges: Parallel Replication Using Shards Is the Only Workable Approach for SQL</title>
		<link>http://www.weez.com/2011/04/robert-hodges-parallel-replication-using-shards-is-the-only-workable-approach-for-sql/</link>
		<comments>http://www.weez.com/2011/04/robert-hodges-parallel-replication-using-shards-is-the-only-workable-approach-for-sql/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 20:07:26 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[Hodges]]></category>
		<category><![CDATA[only]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[Robert]]></category>
		<category><![CDATA[Shards]]></category>
		<category><![CDATA[using]]></category>
		<category><![CDATA[Workable]]></category>

		<guid isPermaLink="false">http://www.weez.com/2011/04/robert-hodges-parallel-replication-using-shards-is-the-only-workable-approach-for-sql/</guid>
		<description><![CDATA[There have been a couple of recent blog articles (here and here) asking for parallel replication based on something other than schemas. &#160;These articles both focus on the problem of parallelizing updates within a single MySQL schema.&#160;&#160;I read these with great interest, not least because they both mentioned&#160;Tungsten&#160;(thanks!) and also found that our&#160;schema-based parallelization approach [...]]]></description>
			<content:encoded><![CDATA[<p>There have been a couple of recent blog articles (<a href="http://www.tusacentral.net/joomla/index.php/mysql-blogs/96-a-dream-on-mysql-parallel-replication">here</a> and <a href="http://openlife.cc/blogs/2011/march/parallelizing-mysql-replication-slave">here</a>) asking for parallel replication based on something other than schemas. &nbsp;These articles both focus on the problem of parallelizing updates within a single MySQL schema.&nbsp;&nbsp;I read these with great interest, not least because they both mentioned&nbsp;<a href="http://code.google.com/p/tungsten-replicator/">Tungsten</a>&nbsp;(thanks!) and also found that our&nbsp;schema-based parallelization approach is too limited. &nbsp;It is therefore worth a short article explaining exactly what the Tungsten approach is and why we chose it. </p>
<p>First of all, Tungsten does not exactly use schema-based parallel replication. &nbsp;Tungsten is actually based on what I call the <i>serialized shard</i> model of replication. &nbsp;We assign global transaction IDs to all transactions, which means that for any particular set of transactions we can always figure out the correct serialization and apply in the right order. &nbsp;This is true even if the transactions travel across independent replication paths or if we have master failover. </p>
<p>Second, we assign a shard ID to all transactions. &nbsp;Shards are independent streams of transactions that execute correctly when applied by themselves in serial order. &nbsp;Shards are typically independent, which means transactions in different shards can execute in parallel without deadlocking or corrupting data. &nbsp;This is the case when each shard contains data for a single customer in a multi-tenant application. &nbsp;We also have a notion of &#8220;critical shards,&#8221; which are shards that contain global data, such as shared currency rate tables. &nbsp;Updates in critical shards cause full serialization across all shards. &nbsp;</p>
<p>You can define shards in a variety of ways, but as a practical matter identifying durable shards inside individual MySQL schemas is hard for most applications, especially if there are constraints between tables or you have large transactions. &nbsp; Many SQL applications tend to make most of their updates to a small number of very large tables, which makes finding stable dividing lines even more difficult. &nbsp;Schemas are therefore a natural unit of sharding, and Tungsten uses these by default. </p>
<p>Schema-based sharding seems pretty limiting, but for current SQL databases it is really the only approach that works. &nbsp;Here are some important reasons that give you a flavor of the issues.</p>
<p>* <b>Restart</b>. &nbsp;To handle failures you need to mark the exact restart point on each replication apply thread or you will either repeat or miss transactions. &nbsp;This requires precise and repeatable serialization on each thread, which you get with the serialized shard model.</p>
<p>* <b>Deadlocks</b>. &nbsp;If there are conflicts between updates you will quickly hit deadlocks. &nbsp;This is especially true because one of the biggest single thread replication optimizations is block commit, where you commit dozens of success transactions at once&#8211;it can raise throughput by 100% in some cases. &nbsp;Deadlocks on the other hand can reduce effective throughput to zero in pathological cases. &nbsp; Shard-based execution avoids deadlocks.</p>
<p>* <b>Ordering</b>. &nbsp;SQL gives you a lot of ways to shoot yourself in the foot through bad transaction ordering. &nbsp;You can&#8217;t write to a table before creating it. &nbsp;You can&#8217;t delete a row before it is inserted. &nbsp;Violating these rules does not just lead to invalid data but also causes errors that stop replication. &nbsp;The workarounds are either unreliable and slow (conflict resolution) or impractical for most applications (make everything an insert). &nbsp;To avoid this you need to observe serialization very carefully.</p>
<p>* <b>Throughput</b>. &nbsp;SQL transactions in real systems vary tremendously in duration, which tends to result in individual long transactions blocking simpler parallelization schemes that use in-memory distribution of updates. &nbsp;In the Tungsten model we can solve this by letting shard progress vary (by hours potentially), something that is only possible with a well-defined serialization model that deals with dependencies between parallel update streams. &nbsp;I don&#8217;t know of another approach that deals with this problem. </p>
<p>If you mess up the solution to any of the foregoing problems, chances are good you will irreparably corrupt data, which leads to replication going completely off the rails. &nbsp;Then you reprovision your slave(s). &nbsp;The databases that most need parallel replication are very large, so this is a multi-hour or even multi-day process. &nbsp;It makes for unpleasant calls with customers when you tell them they need to do this. </p>
<p>I don&#8217;t spend a lot of time worrying that Tungsten parallel replication is not well suited to the single big schema problem. &nbsp;So far, the only ways I can think of making it work scalably require major changes to the DBMS or the applications that use it. &nbsp;In many cases your least costly alternative may be to use SSDs to boost slave I/O performance. </p>
<p>My concerns about Tungsten&#8217;s model lie in a different area. &nbsp;The serialized shard model is theoretically sound&#8211;it has essentially the same semantics as causally dependent messaging in distributed systems. &nbsp;However, if we fail to identify shards correctly (and don&#8217;t know we failed) we will have crashes and corrupt data. &nbsp;I want Tungsten either to work properly or tell users it won&#8217;t work and degrade gracefully to full serialization. &nbsp;If we can&#8217;t do one of these two for every conceivable sequence of transactions that&#8217;s a serious problem. </p>
<p>So, to get back to my original point, serialized shards are the best model for parallel replication in SQL databases as we find them today. &nbsp;I suspect if you look at some of the other incipient designs for parallel replication on MySQL you will find that they follow this model in the end if not at first. &nbsp;I would think in fact that the next step is to add MySQL features that make sharded replication more effective. &nbsp;The drizzle team seems to be thinking along these lines already.
<div class="blogger-post-footer"><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/768233104244702633-5488735872437270768?l=scale-out-blog.blogspot.com" alt="" /></div>
<p>View full post on <a href="http://scale-out-blog.blogspot.com/2011/03/parallel-replication-using-shards-is.html">Planet Drizzle</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2011/04/robert-hodges-parallel-replication-using-shards-is-the-only-workable-approach-for-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Knowledge: A Different Approach to a Database on the Desktop</title>
		<link>http://www.weez.com/2010/07/knowledge-a-different-approach-to-a-database-on-the-desktop/</link>
		<comments>http://www.weez.com/2010/07/knowledge-a-different-approach-to-a-database-on-the-desktop/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 16:24:37 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[desktop']]></category>
		<category><![CDATA[different]]></category>
		<category><![CDATA[Knowledge]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/07/knowledge-a-different-approach-to-a-database-on-the-desktop/</guid>
		<description><![CDATA[Knowledge: A Different Approach to a Database on the Desktop KDE.news: &#8220;Desktop applications for &#8216;Information Management&#8217; that go beyond conventional card-index style databases are hard to find. The ideas behind such software are perhaps not that well known, so a prototype program, Knowledge, has been developed to put them firmly into the public domain.&#8221; Read [...]]]></description>
			<content:encoded><![CDATA[<p><b>Knowledge: A Different Approach to a Database on the Desktop</b><br />
KDE.news: &#8220;Desktop applications for &#8216;Information Management&#8217; that go beyond conventional card-index style databases are hard to find. The ideas behind such software are perhaps not that well known, so a prototype program, Knowledge, has been developed to put them firmly into the public domain.&#8221;</p>
<p>Read more on <a rel="nofollow" href="http://linuxtoday.com/news_story.php3?ltsn=2010-06-30-003-35-NW-KE">Linux Today</a><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/07/knowledge-a-different-approach-to-a-database-on-the-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the best approach to delete garbage and expired entries in a MySQL database?</title>
		<link>http://www.weez.com/2010/06/what-is-the-best-approach-to-delete-garbage-and-expired-entries-in-a-mysql-database/</link>
		<comments>http://www.weez.com/2010/06/what-is-the-best-approach-to-delete-garbage-and-expired-entries-in-a-mysql-database/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 18:15:27 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Delete]]></category>
		<category><![CDATA[Entries]]></category>
		<category><![CDATA[expired]]></category>
		<category><![CDATA[garbage]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/06/what-is-the-best-approach-to-delete-garbage-and-expired-entries-in-a-mysql-database/</guid>
		<description><![CDATA[I want to delete users that hasn&#8217;t logged in in a certain amount of days, and other expired entries in a database. What is the best way of doing this automatically? I&#8217;m using MySQL and PHP for my web application. One way I have thought is having a clean_db() function that I call in every [...]]]></description>
			<content:encoded><![CDATA[<p>I want to delete users that hasn&#8217;t logged in in a certain amount of days, and other expired entries in a database. What is the best way of doing this automatically? I&#8217;m using MySQL and PHP for my web application.</p>
<p>One way I have thought is having a clean_db() function that I call in every page request. Other option can be programming a cron script that runs automatically at certain times.</p>
<p>What is the best way of cleaning a database?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/06/what-is-the-best-approach-to-delete-garbage-and-expired-entries-in-a-mysql-database/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MongoDB Approach to Availability</title>
		<link>http://www.weez.com/2010/05/mongodb-approach-to-availability/</link>
		<comments>http://www.weez.com/2010/05/mongodb-approach-to-availability/#comments</comments>
		<pubDate>Sat, 01 May 2010 07:38:01 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[Availability]]></category>
		<category><![CDATA[MongoDB]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/05/mongodb-approach-to-availability/</guid>
		<description><![CDATA[Another thing I find interesting about MongoDB is its approach to Durability, Data Consistency and Availability. It is very relaxed and will not work for some applications but for others it can be usable in current form. Let me explain some concepts and compare it to technologies in MySQL space. First I think MongoDB is [...]]]></description>
			<content:encoded><![CDATA[<p>Another thing I find interesting about MongoDB is its approach to Durability, Data Consistency and Availability.  It is very relaxed and will not work for some applications but for others it can be usable in current form.   Let me explain some concepts and compare it to technologies in MySQL space.</p>
<p>First I think MongoDB is best compared no to MySQL Server but MySQL Cluster, especially in newer versions which implement &#8220;sharding&#8221;.     Same as commit to NDB Storage engine does not normally mean commit to disk, but rather commit to network  it does not mean commit to disk with MongoDB, furthermore MongoDB uses Asynchronous replication, meaning it may take some time before data will be at more than one node.  You can also use getLastError() to ensure data is propagated to the slave. So you can see it as a hybrid between MySQL Cluster and innodb_flush_log_at_trx_commit=2 mode.    The second difference of course the fact MongoDB is not crash safe &#8211; similar to MyISAM database will need to be repaired if it crashes.  Still I find behavior somewhat similar &#8211; you&#8217;re not expected to run MySQL Cluster without replication,  MongoDB is practically the same.</p>
<p>Second &#8211; if we look at <a href="http://www.mongodb.org/display/DOCS/Replica+Set+Internals">Replication Sets</a> we find them very similar to MySQL Cluster though designed to work with Wide area network and so Async replication.   There is voting required to pick the master node in case of node failure and at least 3 servers is recommended, where you can have some voting servers only cast their votes and hold no data.     The other different is there is only one master rather than multiple. This is because doing master with asynchronous replication requires conflict resolution which can be tricky in general sense and MongoDB wants simplicity of operation for developers and administration.</p>
<p>Third if we look at how failover happens &#8211; same with NDB (native API) it is handled on driver level.  When you connect to replication set you connect to set of server not one of them and if one server fails driver fails over to different master.      Things are again tuned to deal with Asynchronous Replication. Consistency is maintained but at expense of certain changes may be thrown away/ &#8220;rolled back&#8221; in case of fail over.</p>
<p>This approach is not as clean as best possible &#8220;no committed data loss with almost instant fail over&#8221; but It makes sense for large number of applications.  In fact using MySQL Replication for failover we&#8217;re operating with kind of similar situation, just with a lot less automation.</p>
<p>The good question of course is how robust these features are in MongoDB &#8211; many of them are new and Replication Sets are in development still.  It may take a time for them to stabilize as well as later develop tools around them.     How to check if 2  MongoDB nodes are indeed in sync ?  How to do Hot Backups with point in time recovery ?  These and many similar questions need to be answered and bugs worked out.   One good example of early stage of MongoDB replication could be a bug mentioned during presentation today with replication breaking if time on master server is changed (MongoDB uses timestamps to identify events in replication log).   It was just fixed last month I understood. </p>
<p>At the same time many things, including replication are a lot more simply with MongoDB and there is a lot less of old baggage so I hope it will be able to stabilize and mature quickly.</p>
<hr noshade style="margin:0;height:1px" />
<p>Entry posted by peter |<br />
      <a href="http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/#comments">No comment</a></p>
<p>Add to: <a href="http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/&amp;title=MongoDB Approach to Availability" title="Bookmark this post on del.icio.us"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png" alt="delicious" /></a> | <a href="http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/&amp;title=MongoDB Approach to Availability" title="Digg this post on Digg.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png" alt="digg" /></a> | <a href="http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/&amp;title=MongoDB Approach to Availability" title="Submit this post on reddit.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png" alt="reddit" /></a> | <a href="http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/&amp;T=MongoDB Approach to Availability" title="Vote for this article on Netscape"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif" alt="netscape" /></a> | <a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/&amp;title=MongoDB Approach to Availability" title="Add to Google Bookmarks"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png" alt="Google Bookmarks" /></a></p>
<p>View full post on <a href="http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-availability/">MySQL Performance Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/05/mongodb-approach-to-availability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB Approach to database synchronization</title>
		<link>http://www.weez.com/2010/05/mongodb-approach-to-database-synchronization/</link>
		<comments>http://www.weez.com/2010/05/mongodb-approach-to-database-synchronization/#comments</comments>
		<pubDate>Sat, 01 May 2010 04:12:27 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[synchronization]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/05/mongodb-approach-to-database-synchronization/</guid>
		<description><![CDATA[I went to MongoSF today &#8211; quite an event, and I hope to have a chance to write more about it. This post is about one replication problem and how MongoDB solves it. If you&#8217;re using MySQL Replication when your master goes down it is possible for some writes to be executed on the master, [...]]]></description>
			<content:encoded><![CDATA[<p>I went to <a href="http://mongosf.eventbrite.com/">MongoSF</a>  today &#8211; quite an event, and I hope to have a chance to write more about it.   This post is about one replication problem and how MongoDB solves it.   </p>
<p>If you&#8217;re using MySQL Replication when your master goes down it is possible for some writes to be executed on the master, but not on the slave, which gets promoted to the master.  When Master comes back up it has some updates done to it which cause it to be inconsistent with data on the new Master.   In MySQL world we can chose to either ignore this problem (or may be even replay those changes on slaves and hope it works out), re-clone it from the slave or use <strong>mk-table-checksum</strong> to find inconsistencies and re-sync them with <strong>mk-table-sync</strong>. Both of these operations can be very expensive for large databases.</p>
<p><a href="http://www.mongodb.org/">MongoDB</a> approach used in Replication Sets is for failed master to  scan its log files to find all object ids which were modified from the point slave synchronized successfully and retrieve those objects back from the new master (or delete them if they no more exist).  Such approach allows quick synchronization without any complex support of rolling back changes.     In MongoDB  there is a catch with this approach &#8211; because there is no local durability this also works as long as network goes down but server stays up, however once <a href="http://jira.mongodb.org/browse/SERVER-980">Single Server Durability</a> is implemented it will be pretty cool.</p>
<p>What is really interesting &#8211; it should be possible to apply the same concept to MySQL Replication, possibly with help of some tools like MMM.  Row level Replication makes it possible to identify the objects which were changed on the Master after failover to Slave happened and they can be dumped to local file (in case one wants to synchronize them manually) and when fetched again from the master.<br />
This of course will require IDEMPOTENT slave mode but otherwise it should work unless you have DDL operations in between.</p>
<p>In general listening the great presentation on MongoDB Replication by Dwight Merriman  as well as previously looking at how replication done in Redis I should say things can be done a lot more simple way when there is no schema and when you do not have to mess with complex features like triggers or multiple storage engines. </p>
<hr noshade style="margin:0;height:1px" />
<p>Entry posted by peter |<br />
      <a href="http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/#comments">No comment</a></p>
<p>Add to: <a href="http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/&amp;title=MongoDB Approach to database synchronization" title="Bookmark this post on del.icio.us"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png" alt="delicious" /></a> | <a href="http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/&amp;title=MongoDB Approach to database synchronization" title="Digg this post on Digg.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png" alt="digg" /></a> | <a href="http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/&amp;title=MongoDB Approach to database synchronization" title="Submit this post on reddit.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png" alt="reddit" /></a> | <a href="http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/&amp;T=MongoDB Approach to database synchronization" title="Vote for this article on Netscape"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif" alt="netscape" /></a> | <a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/&amp;title=MongoDB Approach to database synchronization" title="Add to Google Bookmarks"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png" alt="Google Bookmarks" /></a></p>
<p>View full post on <a href="http://www.mysqlperformanceblog.com/2010/04/30/mongodb-approach-to-database-synchronization/">MySQL Performance Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/05/mongodb-approach-to-database-synchronization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5 Recipes: A Problem-Solution Approach</title>
		<link>http://www.weez.com/2010/03/php-5-recipes-a-problem-solution-approach/</link>
		<comments>http://www.weez.com/2010/03/php-5-recipes-a-problem-solution-approach/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 16:24:57 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[ProblemSolution]]></category>
		<category><![CDATA[Recipes]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/03/php-5-recipes-a-problem-solution-approach/</guid>
		<description><![CDATA[Product DescriptionPHP 5 Recipes: A Problem-Solution Approach supplies you with complete code for all of the common coding problems you are likely to face when using PHP in your day-to-day work. The book begins with an in-depth discussion of PHP 5 object-oriented techniques and methodology, and gets you up to speed on OOP with PHP: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/PHP-5-Recipes-Problem-Solution-Approach/dp/1590595092%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1590595092" rel="nofollow"><img style="float:left;margin: 0 20px 10px 0;" src="http://ecx.images-amazon.com/images/I/51-vD9vrjQL._SL160_.jpg" /></a></p>
<p><b>Product Description</b><br />PHP 5 Recipes: A Problem-Solution Approach supplies you with complete code for all of the common coding problems you are likely to face when using PHP in your day-to-day work. The book begins with an in-depth discussion of PHP 5 object-oriented techniques and methodology, and gets you up to speed on OOP with PHP: where and where not to use it, and how to use it.    This invaluable guide includes over 200 recipes and covers numerous topics: math, arrays, automation, &#8230; <a href="http://www.amazon.com/PHP-5-Recipes-Problem-Solution-Approach/dp/1590595092%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1590595092" rel="nofollow">More >></a></p>
<p><a href="http://www.amazon.com/PHP-5-Recipes-Problem-Solution-Approach/dp/1590595092%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1590595092" title="PHP 5 Recipes: A Problem-Solution Approach" rel="nofollow"><b>PHP 5 Recipes: A Problem-Solution Approach</b></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/03/php-5-recipes-a-problem-solution-approach/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Embedded Linux Primer: A Practical Real-World Approach</title>
		<link>http://www.weez.com/2010/02/embedded-linux-primer-a-practical-real-world-approach/</link>
		<comments>http://www.weez.com/2010/02/embedded-linux-primer-a-practical-real-world-approach/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:11:23 +0000</pubDate>
		<dc:creator>Abidoon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Approach]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Practical]]></category>
		<category><![CDATA[Primer]]></category>
		<category><![CDATA[RealWorld]]></category>

		<guid isPermaLink="false">http://www.weez.com/2010/02/embedded-linux-primer-a-practical-real-world-approach/</guid>
		<description><![CDATA[Product DescriptionComprehensive Real-World Guidance for Every Embedded Developer and Engineer This book brings together indispensable knowledge for building efficient, high-value, Linux-based embedded products: information that has never been assembled in one place before. Drawing on years of experience as an embedded Linux consultant and field application engineer, Christopher Hallinan offers solutions for the specific technical [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0131679848%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131679848" rel="nofollow"><img style="float:left;margin: 0 20px 10px 0;" src="http://ecx.images-amazon.com/images/I/51D179JN2PL._SL160_.jpg" /></a></p>
<p><b>Product Description</b><br />Comprehensive Real-World Guidance for Every Embedded Developer and Engineer  This book brings together indispensable knowledge for building efficient, high-value, Linux-based embedded products: information that has never been assembled in one place before. Drawing on years of experience as an embedded Linux consultant and field application engineer, Christopher Hallinan offers solutions for the specific technical issues you’re most likely to face, demonstrates how&#8230; <a href="http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0131679848%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131679848" rel="nofollow">More >></a></p>
<p><a href="http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0131679848%3FSubscriptionId%3D0C19XXHDAH4R099HQER2%26tag%3Dreaditlcom-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131679848" title="Embedded Linux Primer: A Practical Real-World Approach" rel="nofollow"><b>Embedded Linux Primer: A Practical Real-World Approach</b></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weez.com/2010/02/embedded-linux-primer-a-practical-real-world-approach/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

