<?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>baseplane - technology platforms &#187; howto</title>
	<atom:link href="http://baseplane.com/category/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://baseplane.com</link>
	<description>Technology Platforms, Architecture and Kits for all your codes by Ryan Christensen</description>
	<lastBuildDate>Thu, 12 Nov 2009 05:10:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Restlet RESTful Lightweight Kit for Java</title>
		<link>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/</link>
		<comments>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 03:24:36 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[formal]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[market formats]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jax]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RESTful]]></category>
		<category><![CDATA[Restlet]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=52</guid>
		<description><![CDATA[Finally rest for all that boilerplate in Java.  At each turn of lots of Java frameworks you are bombarded with layers.  I felt this long ago and see it in the developers eyes that work with Java.  Java can be easy, it can be RESTful and it will make you look sharp.

Lightweight REST framework for [...]]]></description>
			<content:encoded><![CDATA[<p>Finally rest for all that boilerplate in Java.  At each turn of lots of Java frameworks you are bombarded with layers.  I felt this long ago and see it in the developers eyes that work with Java.  Java can be easy, it can be RESTful and it will make you look sharp.</p>
<p style="padding-left: 30px;"><a href="http://www.restlet.org/"><img src="http://farm4.static.flickr.com/3283/2597021628_8bbf4d5baa_o.gif" alt="" width="200" height="71" /></a></p>
<p style="padding-left: 30px;"><a href="http://www.restlet.org/" target="_blank"><strong>Lightweight REST framework for Java</strong></a></p>
<p class="welcome" style="padding-left: 30px;">Do you want to embrace the architecture of the Web and benefit from its simplicity and scalability? Leverage our innovative REST engine and start blending your Web Sites and Web Services into uniform Web Applications!</p>
<p class="welcome">Java is making things more lightweight now with lots of emerging kits that compete with other web ready platforms like Python, Ruby, .NET, PHP etc. After this many years things get bloated and need to be simplified.  I think this will start winning people over in this direction.</p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Common Baseplane Method to Caching &#8212; memcached</title>
		<link>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/</link>
		<comments>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/#comments</comments>
		<pubDate>Tue, 27 May 2008 18:11:43 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rom]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[layers]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=51</guid>
		<description><![CDATA[If you have ever worked on a massively high trafficked website, you know that cache is very important to keeping the server count down and being a superhero to your database servers.  Cache can be bad and overly optimized but when you hit a certain threshold, relational databases, databases that are dimension modelled for [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever worked on a massively high trafficked website, you know that cache is very important to keeping the server count down and being a superhero to your database servers.  Cache can be bad and overly optimized but when you hit a certain threshold, relational databases, databases that are dimension modelled for data warehouse, and even server resources get exhausted.  At that point you have two options, buy more servers, or more likely, cache read data.</p>
<p>Each platform has their own way to do this, but there is a common baseplane way to do caching, yes even in .NET.  That is with memcached.  <strong><a href="http://www.danga.com/memcached/apis.bml" target="_blank">Memcached </a></strong>is a very common and useful tool that makes caching data and cache layers in an application something that can be the same on every platform. The benefit of using memcached is it is open, common and<a href="http://www.danga.com/memcached/apis.bml" target="_blank"> it has APIs for nearly every popular web development platform</a> (and can be wired in easily to platforms that don&#8217;t have their own cache mechanism).  Why write your caching layer specific to a certain platform when you can memcache?</p>
<p>If you write high performance web apps and don&#8217;t memcache, I feel bad for your server budget and your late nights when that ad buy hits or something popular on your site becomes all the rave.</p>
<h2>Perl API</h2>
<p>An object-oriented Perl module can be <a href="http://search.cpan.org/dist/Cache-Memcached/">found on CPAN</a> as <tt>Cache::Memcached</tt> or <a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/"> in Subversion</a> (<a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/ChangeLog">ChangeLog</a>). (GPL/Artistic)</p>
<p>The Perl API takes advantage of the server&#8217;s opaque flag support and sets its &#8220;complex&#8221; flag whenever the object being stored or retrieved isn&#8217;t a plain scalar.  In that case, the <tt>Storable</tt> module is used to freeze and thaw the value automatically going in and out of the memcached.</p>
<p>There is also Cache::Memcached::Fast&#8212;another Perl client written in C, largely compatible with the original Cache::Memcached. Available on CPAN at <a href="http://search.cpan.org/dist/Cache-Memcached-Fast/">http://search.cpan.org/dist/Cache-Memcached-Fast/</a>.</p>
<h2>PHP API</h2>
<p>There are tons of PHP libraries available, in different conditions.  But it now seems there&#8217;s an official one:</p>
<ul>
<li><a href="http://pecl.php.net/package/memcache">PHP PECL memcached client</a> &#8212; official PHP client</li>
</ul>
<h2>Python API</h2>
<p>The Python client we&#8217;d previously released was just a prototype, and we don&#8217;t have regular Python programmers on hand. The folks at Tummy.com have took over maintenance. See <a href="ftp://ftp.tummy.com/pub/python-memcached/">ftp://ftp.tummy.com/pub/python-memcached/</a> for the latest versions.</p>
<h2>Ruby API</h2>
<ul>
<li><a href="http://www.deveiate.org/code/Ruby-MemCache.html">http://www.deveiate.org/code/Ruby-MemCache.html</a></li>
<li>gem install memcache-client</li>
<li><a href="http://blog.evanweaver.com/files/doc/fauna/memcached/">http://blog.evanweaver.com/files/doc/fauna/memcached/</a>. C backed client wrapping libmemcached.</li>
</ul>
<h2>Java API</h2>
<p>A Java API is maintained by <a href="mailto:greg@meetup.com">Greg Whalin</a> from <a href="http://www.meetup.com/">Meetup.com</a>.  You can find that library here:</p>
<ul>
<li><a href="http://www.whalin.com/memcached/">http://www.whalin.com/memcached/</a> &#8212; Java API for memcached</li>
</ul>
<p>An improved Java API maintained by Dustin Sallings is also available. Aggressively optimised, ability to run async, supports binary protocol, etc. See site for details:</p>
<ul>
<li><a href="http://bleu.west.spy.net/%7Edustin/projects/memcached/">http://bleu.west.spy.net/~dustin/projects/memcached/</a> &#8212; Improved Java API for memcached</li>
</ul>
<h2>C# API</h2>
<p>There are multiple C# APIs:</p>
<ul>
<li><a href="https://sourceforge.net/projects/memcacheddotnet/">https://sourceforge.net/projects/memcacheddotnet/</a></li>
<li><a href="http://www.codeplex.com/EnyimMemcached/">http://www.codeplex.com/EnyimMemcached/</a> &#8211; Client developed in .NET 2.0 keeping performance and extensibility in mind. (Supports consistent hashing.)</li>
<li><a href="http://code.google.com/p/beitmemcached/">http://code.google.com/p/beitmemcached/</a> &#8211; Client developed by BeIT with many new features.</li>
</ul>
<h2>C API</h2>
<p>Multiple C libraries for memcached exist:</p>
<ul>
<li><a href="http://www.outoforder.cc/projects/libs/apr_memcache/">apr_memcache</a> by Paul Querna; Apache Software License version 2.0</li>
<li><a href="http://tangent.org/552/libmemcached.html">libmemcached</a> by Brian Aker; BSD license. This is a new library, under heavy development.</li>
<li><a href="http://people.freebsd.org/%7Eseanc/libmemcache/">libmemcache</a> by Sean Chittenden; BSD license. This is the original C library. It is no longer under active development. You should try libmemcached instead.</li>
</ul>
<h2>Postgres API</h2>
<p>The pgmemcache project allows you to access memcache servers from Postgresql Stored Procedures and Triggers.   More details and downloads are available at:</p>
<ul>
<li><a href="http://pgfoundry.org/projects/pgmemcache/">http://pgfoundry.org/projects/pgmemcache/</a></li>
</ul>
<h2>Chicken Scheme</h2>
<ul>
<li><a href="http://chicken.wiki.br/memcached">http://chicken.wiki.br/memcached</a> &#8212; Chicken Scheme library</li>
</ul>
<h2>Lua</h2>
<ul>
<li><a href="http://luamemcached.luaforge.net/">http://luamemcached.luaforge.net/</a> &#8212; Lua library</li>
</ul>
<h2>MySQL API</h2>
<p>The memcache_engine allows memcache to work as a storage engine to MySQL. This means that you can SELECT/UPDATE/INSERTE/DELETE from it as though it is a table in MySQL.</p>
<ul>
<li><a href="http://tangent.org/index.pl?node_id=506">memcache_engine</a></li>
</ul>
<p>A set of MySQL UDFs (user defined functions) to work with memcached using libmemcached.</p>
<ul>
<li><a href="http://tangent.org/586/Memcached_Functions_for_MySQL.html">MySQL UDFs for memcached</a></li>
</ul>
<h2>Protocol</h2>
<p>To write a new client, check out the <a href="http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt">protocol docs</a>.  Be aware that the most important part of the client is the hashing across multiple servers, based on the key, or an optional caller-provided hashing value.  Feel free to join the mailing list (or mail me directly) for help, inclusion in Subversion, and/or a link to your client from this site.</p>
<p>The best part, they support all good platforms and even Lua, and wisely they left out VB.NET, no worries, VB.NET&#8217;ers will never know.  Only kidding&#8230;</p>
<p><strong>Finally, memcached is distributed, most cache layers included with platforms listed above are in process and per machine.  If you are running your code on a webfarm memcached is the only way to go.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Remove All Subversion .svn Folders and Files Quickly</title>
		<link>http://baseplane.com/2008/03/19/howto-remove-all-subversion-svn-folders-and-files-on-windows-quickly/</link>
		<comments>http://baseplane.com/2008/03/19/howto-remove-all-subversion-svn-folders-and-files-on-windows-quickly/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 05:29:32 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[rd]]></category>
		<category><![CDATA[recursive]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://baseplane.com/2008/03/19/howto-remove-all-subversion-svn-folders-and-files-on-windows-quickly/</guid>
		<description><![CDATA[Yes you can Export a clean build with TortoiseSVN so that you have a clean copy without the .svn tracking items, remove the directory and make a new one.
But, if you need to clean up an existing folder you can use some old skool bat/cmd in the root with this command on Windows
for /f "tokens=* [...]]]></description>
			<content:encoded><![CDATA[<p>Yes you can Export a clean build with TortoiseSVN so that you have a clean copy without the .svn tracking items, remove the directory and make a new one.</p>
<p><strong>But, if you need to clean up an existing folder you can use some old skool bat/cmd in the root with this command on Windows</strong></p>
<pre language="csharp" line="1">for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do ( rd /s /q "%%i" )</pre>
<p>[<a href="http://axel.cfwebtools.com/index.cfm/2007/9/5/Delete-All-svn-Files-in-windows" target="_blank">source</a>]</p>
<p>Just put that in a .cmd file like cleansvn.cmd like the source suggests in the root of the subversion project you want to clean up.  Works nicely.  It essentially just uses the rd command to remove directories recursively that match &#8217;svn&#8217;.</p>
<p>I will be featuring tutorials and utilities with subversion including some tools to quickly add and pull the newly imported trees into Subversion that can be cumbersome.  I will also be doing some in an IronPython command scripting language that gives you the full power of the .net language runtime to use in your scripts.</p>
<p>Bringing scripts back to Windows through good uses is the goal.  Scripts are not always good to build on but for quick common tasks they can be great ways to do tasks much quicker.</p>
<p><strong>For *nix you can just do</strong></p>
<p><code>find . -type d -name ‘.svn' -print0 | xargs -0 rm -rdf</code></p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/03/19/howto-remove-all-subversion-svn-folders-and-files-on-windows-quickly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
