<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Rafael Sanches</title>
	<atom:link href="http://mufumbo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mufumbo.wordpress.com</link>
	<description>Good morning to the day;</description>
	<lastBuildDate>Sun, 18 Oct 2009 15:55:43 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='mufumbo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/c7431c7a92dc29cca55877f36d693994?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Rafael Sanches</title>
		<link>http://mufumbo.wordpress.com</link>
	</image>
			<item>
		<title>RSS parsing optimization for bandwidth and processing time with SAX and httpclient &#8211; pooling scripts</title>
		<link>http://mufumbo.wordpress.com/2009/10/18/rss-parsing-optimization-for-bandwidth-processing-time-sax-httpclient/</link>
		<comments>http://mufumbo.wordpress.com/2009/10/18/rss-parsing-optimization-for-bandwidth-processing-time-sax-httpclient/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 15:55:43 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[maintainability]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[httpclient]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[SAX]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=88</guid>
		<description><![CDATA[RSS parsing optimization for bandwidth and processing time with SAX and httpclient - useful for pooling scripts<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=88&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My server was having a constant income traffic of 1.7mb/s for a service that downloads RSS from the net and process them in order to return the last updates of multiple RSS feeds. It&#8217;s a very basic pooling system, but it was downloading too much data for just 5000 active users. The growth wasn&#8217;t looking very feasible.</p>
<p>I was using the <a href="https://rome.dev.java.net/">ROME</a> java library to parse the XML. So far so good, the problem was that it downloads the whole feed and process it all. With my application scope I don&#8217;t need to download the whole RSS, just the new entries that i didn&#8217;t downloaded yet.</p>
<p>The solution was to use a custom RSS parser, looping through the &#8220;&#8221; tags and identifying &#8220;&#8221;. In this way i can parse item per item, and identify if the current item is not updated, so I can abort the http connection and stop the download of the feed. I wish that ROME had an option to do that, like &#8220;stop processing when date minor than..&#8221;.</p>
<p>The impact on bandwidth usage and in processing time were impressive:<br />
<img src="http://www.mufumbo.com/misc/screenshots/rss-optimization-bandwidth.png" alt="" /><br />
<img src="http://www.mufumbo.com/misc/screenshots/rss-optimization-processingtime.png" alt="" /></p>
<p>If someone is interested I can post and explain the java class. It&#8217;s compatible with com.sun.syndication.feed.synd and uses the SyndEntry and SyndFeed interfaces. </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=88&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2009/10/18/rss-parsing-optimization-for-bandwidth-processing-time-sax-httpclient/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>

		<media:content url="http://www.mufumbo.com/misc/screenshots/rss-optimization-bandwidth.png" medium="image" />

		<media:content url="http://www.mufumbo.com/misc/screenshots/rss-optimization-processingtime.png" medium="image" />
	</item>
		<item>
		<title>My first public android app &#8211; craigslist notification</title>
		<link>http://mufumbo.wordpress.com/2009/09/17/android-app-craigslist-notification/</link>
		<comments>http://mufumbo.wordpress.com/2009/09/17/android-app-craigslist-notification/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 18:16:56 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[android app]]></category>
		<category><![CDATA[android market]]></category>
		<category><![CDATA[craigslist]]></category>
		<category><![CDATA[craigslist alerts]]></category>
		<category><![CDATA[craigslist android app]]></category>
		<category><![CDATA[craigslist notification]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=67</guid>
		<description><![CDATA[Description of my first public android app in the market. 
It's named "craigslist notification" and it sends alerts when new stuff is posted on craigslist.org<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=67&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://craigslist-notification.mufumbo.com/"><br />
<img src="http://craigslist-notification.mufumbo.com/screenshot/icon.png" border="0" alt="logo" /></a><a title="Open in Market" href="http://www.cyrket.com/package/com.mufumbo.craigslist.notification.android"></a><a title="Open in Market" href="http://www.cyrket.com/package/com.mufumbo.craigslist.notification.android"><img class="qrcode" src="http://chart.apis.google.com/chart?cht=qr&amp;chs=100x100&amp;chl=market://search?q=pname:com.mufumbo.craigslist.notification.android" border="0" alt="" /></a></p>
<p>This application alert the users when new stuff is posted to craigslist. In this way they can get the best deals as soon as they are registered.</p>
<p>The application is totally free and doesn&#8217;t use ads either in current or future versions. There is no form of monetization associated with this application. I am using my new server that i am renting from hetzner.<br />
The application does not require registration and does not store information about its usage on the server.</p>
<h3>Features</h3>
<ul>
<li>Enable the user to create notifications for certain keywords;</li>
<li>Allow to have all filtering that craigslist.org has;</li>
<li>Has all cities that craigslist.org has;</li>
<li>Preferences menu for configuring the location and network options;</li>
<li>Mark posts as favorite to read at a later time;</li>
<li>The relevant posts are downloaded on the phone, so they can be read later without network;</li>
<li>Faster navigation, since relevant posts are downloaded in batch;</li>
</ul>
<h3>Technical details</h3>
<ul>
<li>It periodically checks for new posts;</li>
<li>In each check it download *only* the updated data, which should be<br />
small after the initial download;</li>
<li> If no update is available it does not download anything at all. This proves to use less bandwidth than a normal navigation app, since:
<ul>
<li>Only relevant data is downloaded;</li>
<li>It never download duplicated data two times;</li>
<li>It&#8217;s not like RSS feeds that it&#8217;s the phone downloading and pooling the feeds every time.<br />
The phone only donwload the updated data one and do it just one time.</li>
</ul>
</li>
</ul>
<p><a name="bandwidthusage"></a></p>
<h3>Bandwidth usage</h3>
<ul>
<li>For example, a download of 100 new posts takes 50kb of<br />
internet bandwidth.</li>
<li>The daily bandwidth will depend on the number of<br />
notifications that you are monitoring and the number of times that<br />
your notifications get updated.</li>
<li>To reduce bandwidth, try to be specific in your notifications.</li>
<li>For example: try to use &#8220;honda civic&#8221; instead of &#8220;car&#8221;</li>
</ul>
<div class="ss">
		<a name="screenshots"></a></p>
<h1>Screenshots</h1>
<ul>
<li>
<h3>Main screen &#8211; notification list</h3>
<p>				Main screen. This is where your notifications are listed: </p>
<p>				<img src="http://craigslist-notification.mufumbo.com/screenshot/notification-list.png">
			</li>
<li>
<h3>Posts listing</h3>
<p>				When you click on one notification, you go to the post listing.<br /> <br />
				Notice that you can edit the previously configured notification by clicking on this menu item.<br />
				<img src="http://craigslist-notification.mufumbo.com/screenshot/announce-list.png">
			</li>
<li>
<h3>Post detail</h3>
<p>				Once you click on one post you will see this screen which displays the post details. <br /> <br />
				You are not required to be connected to the network to see the already downloaded posts. </br><br />
				Notice that you can mark posts as favorite to read them later. The favorite page is accessed from the main menu.<br />
				<img src="http://craigslist-notification.mufumbo.com/screenshot/announce-detail.png">
			</li>
<li>
<h3>Notification</h3>
<p>				When there are new posts the app displays a notification on your phone. This can be disabled in the preferences.<br />
				<img src="screenshot/notification-update.png">
			</li>
</ul></div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=67&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2009/09/17/android-app-craigslist-notification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>

		<media:content url="http://craigslist-notification.mufumbo.com/screenshot/icon.png" medium="image">
			<media:title type="html">logo</media:title>
		</media:content>

		<media:content url="http://chart.apis.google.com/chart?cht=qr&#38;chs=100x100&#38;chl=market://search?q=pname:com.mufumbo.craigslist.notification.android" medium="image" />

		<media:content url="http://craigslist-notification.mufumbo.com/screenshot/notification-list.png" medium="image" />

		<media:content url="http://craigslist-notification.mufumbo.com/screenshot/announce-list.png" medium="image" />

		<media:content url="http://craigslist-notification.mufumbo.com/screenshot/announce-detail.png" medium="image" />

		<media:content url="screenshot/notification-update.png" medium="image" />
	</item>
		<item>
		<title>reading java-style properties file in PHP</title>
		<link>http://mufumbo.wordpress.com/2009/08/05/reading-java-style-properties-file-in-php/</link>
		<comments>http://mufumbo.wordpress.com/2009/08/05/reading-java-style-properties-file-in-php/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 04:46:37 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[caveats]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[java properties]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php propers class]]></category>
		<category><![CDATA[properties]]></category>
		<category><![CDATA[protieperties in php]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=63</guid>
		<description><![CDATA[explain how i managed to read a php property file. The properties file is a key=value separated by \n and is very used to hold configuration in java. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=63&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s very strange that PHP only support the &#8220;<a href="http://us.php.net/manual/en/function.parse-ini-string.php">parse_ini_string</a>&#8221; as configuration function. I don&#8217;t like it at all! It has problems handling quotes, new lines, and other caveats.</p>
<p>The only benefit of <a href="http://us.php.net/manual/en/function.parse-ini-string.php">parse_ini_string</a> against Java Properties file is that it can handle &#8220;arrays&#8221;, but I don&#8217;t think that&#8217;s a benefit anyways. I had some trouble because I was wanting to use <strong>properties file in php</strong> for translations, since I only found buggy versions on the net I had build my own:</p>
<pre>
      function parse_properties($txtProperties) {
		$result = array();
		$lines = split("\n", $txtProperties);
		$key = "";
		$isWaitingOtherLine = false;
		foreach ($lines as $i =&gt; $line) {
			if (empty($line) || (!$isWaitingOtherLine &amp;&amp; strpos($line, "#") === 0))
				continue;

			if (!$isWaitingOtherLine) {
				$key = substr($line, 0, strpos($line, '='));
				$value = substr($line, strpos($line, '=')+1, strlen($line));
			}
			else {
				$value .= $line;
			}	

			/* Check if ends with single '\' */
			if (strrpos($value, "\\") === strlen($value)-strlen("\\")) {
				$value = substr($value,0,strlen($value)-1)."\n";
				$isWaitingOtherLine = true;
			}
			else {
				$isWaitingOtherLine = false;
			}

			$result[$key] = $value;
			unset($lines[$i]);
		}

		return $result;
	}
</pre>
<p>This function can be used to create a <em>php properties class</em>. It should have the same behavior as the <b>Java properties</b>, so it should handle &#8221; quotes and \ for new lines.</p>
<p>Let me know if it have bugs <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=63&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2009/08/05/reading-java-style-properties-file-in-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>Retrieve driving directions from google maps with server-side HTTP calls and show results with static maps for WAP</title>
		<link>http://mufumbo.wordpress.com/2009/07/23/server-side-driving-direction-with-google-maps-api-with-php-for-wap-and-web/</link>
		<comments>http://mufumbo.wordpress.com/2009/07/23/server-side-driving-direction-with-google-maps-api-with-php-for-wap-and-web/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 08:32:34 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[maps]]></category>
		<category><![CDATA[driving directions]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google apis]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[server-side]]></category>
		<category><![CDATA[WAP]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=53</guid>
		<description><![CDATA[In this post I explain how i've managed to retrieve driving directions from google maps with server-side HTTP calls and show results with static maps for WAP. This is not compliant with google terms of services, but it works. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=53&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mobile phones are not famous for supporting javascript. A problem arises when you need to use google API to retrieve the driver directions for a mobile site, or when you just don&#8217;t want your site to be overloaded with the complete maps toolkit to show a simple map.</p>
<p>Google provides a good <a href="http://gmaps-samples.googlecode.com/svn/trunk/gdirections/directions-static.html">directions-static demo</a> but, unfortunately, it&#8217;s javascript-only. They don&#8217;t have any example or documentation about how to generate the directions through server side HTTP call.</p>
<p>The driving direction API doesn&#8217;t seem to be 100%. I wasn&#8217;t able to find examples of how to use the directions API with google maps API-V3 javascript, it seems that <em>it&#8217;s not ready yet</em>. I&#8217;ve founded <a href="http://code.google.com/p/gmaps-api-issues/issues/detail?id=235">this issue tracking</a> in <a style="text-decoration:none;color:#000000;" href="http://code.google.com/p/gmaps-api-issues/">gmaps-api-issues</a> (by the way, the most voted issue) that <em>says that there isn&#8217;t support for google maps directions through server side http calls</em>.</p>
<p><em>Putting all together</em>: I have decided to check what HTTP calls the directions API of google maps API-V2 does and to use it in the server side. I don&#8217;t know if it&#8217;s forbidden in the terms of service, <strong>but</strong> <strong>it works</strong>!</p>
<p>Basically, my PHP server-side is doing the exact same thing that the google <a href="http://gmaps-samples.googlecode.com/svn/trunk/gdirections/directions-static.html">directions-static demo</a> is doing in javascript (checkout the source code of the page). It retrieves the answer from the server and write the coordinates information in the  static maps URL.</p>
<p>Note that HttpHelper::doGET downloads the string, you can substitute that part with CURL or fopen. Here is the code to make the HTTP calls to get the driving directions and to create the static map image link:</p>
<pre>class GoogleGeo {
    public static function buildStaticMap($center, $markers=array(), $width=400, $height=400, $zoom=12, $directions=null) {
        $strMarkers = "";
        foreach($markers as $marker) {
            if (!empty($strMarkers)) $strMarkers .= '|';
            $strMarkers .= urlencode($marker);
        }
        if ($width &gt; 640) $width = 640;
        if (!empty($center)) {
            $center = "&amp;center=".$center;
        }
        if (!empty($strMarkers)) {
            $strMarkers = "&amp;markers=".$strMarkers;
        }
        if ($zoom &gt; 0) {
            $zoom = "&amp;zoom=$zoom";
        }

        $steps = "";
        if (!empty($directions)) {
            foreach($directions['Directions']['Routes'][0]['Steps'] as $step) {
                $lat = $step['Point']['coordinates'][1];
                $lon = $step['Point']['coordinates'][0];
                if (!empty($steps)) $steps .= "|";
                $steps .= $lat.",".$lon;
            }
            if (!empty($steps)) {
                $steps .= "|".$directions['Directions']['Routes'][0]['End']['coordinates'][1].",".$directions['Directions']['Routes'][0]['End']['coordinates'][0];
                $steps = "&amp;path=rgb:0x0000ff,weight:5|".$steps;
            }
        }

        $staticMap = "http://maps.google.com/staticmap?maptype=mobile&amp;size=".$width."x$height&amp;maptype=roadmap&amp;key=".GOOGLE_MAPS_KEY."&amp;sensor=false$strMarkers$center$zoom$steps";
        return $staticMap;
    }

    public static function retrieveDirections ($from, $to) {
        $params = array('key' =&gt; GOOGLE_MAPS_KEY, 'output' =&gt; 'json', 'q' =&gt; "from: $from to: $to");
        $url = "http://maps.google.com/maps/nav";
        $result = HttpHelper::doGET($url, $params);
        $result = json_decode($result, true);
        return $result;
    }
}</pre>
<p>A <strong>example</strong> how to use this code is:</p>
<pre>...
    /* FROM and TO coordinates */
    $markers = array("37.262568,-121.962232,redr", "37.229898,-121.971853,blueg");
    /* Get the driving directions from google api */
    $directions = GoogleGeo::retrieveDirections("485 Alberto Way, Suite 210. Los Gatos, CA 95032", "14109 Winchester Bl, Los Gatos, CA");
    /* Create the map image url with the directions coordinates */
    $staticMap = GoogleGeo::buildStaticMap(null, $markers, 640, 240, null, $directions);
....</pre>
<p>In this way you will have <strong>$staticMap</strong> with a value similar to the image urls in the <a href="http://gmaps-samples.googlecode.com/svn/trunk/gdirections/directions-static.html">directions-static demo</a>. In this case it will be:</p>
<p>http://maps.google.com/staticmap?maptype=mobile&amp;size=640&#215;240&amp;maptype=roadmap&amp;key=YOUR_GOOGLE_KEY&amp;sensor=false&amp;markers=37.262568%2C-121.962232%2Credr|37.229898%2C-121.971853%2Cblueg&amp;path=rgb:0&#215;0000ff,weight:5|37.22898,-121.97104|37.22818,-121.97112|37.22597,-121.97231|37.22892,-121.98063|37.23713,-121.97714|37.26301,-121.96088|37.262282,-121.961628</p>
<p>The variable <strong>$directions</strong> will contain a array with the complete direction steps, so you can easily loop through it and print it out on your WAP application. For example:</p>
<pre>Array
(
    [name] =&gt; from: 485 Alberto way, Los Gatos, CA to: 14109 Winchester Bl, Los Gatos, CA
    [Status] =&gt; Array
        (
             =&gt; 200
            [request] =&gt; directions
        )

    [Placemark] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [id] =&gt;
                    [address] =&gt; 485 Alberto Way, Los Gatos, CA 95032
                    [AddressDetails] =&gt; Array
                        (
                            [Country] =&gt; Array
                                (
                                    [CountryNameCode] =&gt; US
                                    [AdministrativeArea] =&gt; Array
                                        (
                                            [AdministrativeAreaName] =&gt; CA
                                            [Locality] =&gt; Array
                                                (
                                                    [LocalityName] =&gt; Los Gatos
                                                    [Thoroughfare] =&gt; Array
                                                        (
                                                            [ThoroughfareName] =&gt; 485 Alberto Way
                                                        )

                                                    [PostalCode] =&gt; Array
                                                        (
                                                            [PostalCodeNumber] =&gt; 95032
                                                        )

                                                )

                                        )

                                )

                            [Accuracy] =&gt; 8
                        )

                    [Point] =&gt; Array
                        (
                            [coordinates] =&gt; Array
                                (
                                    [0] =&gt; -121.971853
                                    [1] =&gt; 37.229898
                                    [2] =&gt; 0
                                )

                        )

                )

            [1] =&gt; Array
                (
                    [id] =&gt;
                    [address] =&gt; 14109 Winchester Blvd, Los Gatos, CA 95032
                    [AddressDetails] =&gt; Array
                        (
                            [Country] =&gt; Array
                                (
                                    [CountryNameCode] =&gt; US
                                    [AdministrativeArea] =&gt; Array
                                        (
                                            [AdministrativeAreaName] =&gt; CA
                                            [Locality] =&gt; Array
                                                (
                                                    [LocalityName] =&gt; Los Gatos
                                                    [Thoroughfare] =&gt; Array
                                                        (
                                                            [ThoroughfareName] =&gt; 14109 Winchester Blvd
                                                        )

                                                    [PostalCode] =&gt; Array
                                                        (
                                                            [PostalCodeNumber] =&gt; 95032
                                                        )

                                                )

                                        )

                                )

                            [Accuracy] =&gt; 8
                        )

                    [Point] =&gt; Array
                        (
                            [coordinates] =&gt; Array
                                (
                                    [0] =&gt; -121.962232
                                    [1] =&gt; 37.262568
                                    [2] =&gt; 0
                                )

                        )

                )

        )

    [Directions] =&gt; Array
        (
            [copyrightsHtml] =&gt; Map data ©2009 Tele Atlas
            [summaryHtml] =&gt; 3.5 mi (about 9 mins)
            [Distance] =&gt; Array
                (
                    [meters] =&gt; 5608
                    [html] =&gt; 3.5 mi
                )

            [Duration] =&gt; Array
                (
                    [seconds] =&gt; 592
                    [html] =&gt; 9 mins
                )

            [Routes] =&gt; Array
                (
                    [0] =&gt; Array
                        (
                            [Distance] =&gt; Array
                                (
                                    [meters] =&gt; 5608
                                    [html] =&gt; 3.5 mi
                                )

                            [Duration] =&gt; Array
                                (
                                    [seconds] =&gt; 592
                                    [html] =&gt; 9 mins
                                )

                            [summaryHtml] =&gt; 3.5 mi (about 9 mins)
                            [Steps] =&gt; Array
                                (
                                    [0] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Head <strong>south</strong> on <strong>Alberto Way</strong> toward <strong>Cuesta de Los Gatos Way</strong>
                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 95
                                                    [html] =&gt; 312 ft
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 9
                                                    [html] =&gt; 9 secs
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.97104
                                                            [1] =&gt; 37.22898
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                    [1] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Turn <strong>right</strong> to stay on <strong>Alberto Way</strong>

                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 332
                                                    [html] =&gt; 0.2 mi
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 35
                                                    [html] =&gt; 35 secs
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.97112
                                                            [1] =&gt; 37.22818
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                    [2] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Turn <strong>right</strong> at <strong>Los Gatos Saratoga Rd</strong>
                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 814
                                                    [html] =&gt; 0.5 mi
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 83
                                                    [html] =&gt; 1 min
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.97231
                                                            [1] =&gt; 37.22597
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                    [3] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Turn <strong>right</strong> at <strong>N Santa Cruz Ave</strong>

                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 978
                                                    [html] =&gt; 0.6 mi
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 101
                                                    [html] =&gt; 1 min
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.98063
                                                            [1] =&gt; 37.22892
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                    [4] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Continue on <strong>Winchester Blvd</strong>
                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 3273
                                                    [html] =&gt; 2.0 mi
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 311
                                                    [html] =&gt; 5 mins
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.97714
                                                            [1] =&gt; 37.23713
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                    [5] =&gt; Array
                                        (
                                            [descriptionHtml] =&gt; Make a <strong>U-turn</strong> at <strong>Division St</strong>
                                            [Distance] =&gt; Array
                                                (
                                                    [meters] =&gt; 116
                                                    [html] =&gt; 381 ft
                                                )

                                            [Duration] =&gt; Array
                                                (
                                                    [seconds] =&gt; 53
                                                    [html] =&gt; 53 secs
                                                )

                                            [Point] =&gt; Array
                                                (
                                                    [coordinates] =&gt; Array
                                                        (
                                                            [0] =&gt; -121.96088
                                                            [1] =&gt; 37.26301
                                                            [2] =&gt; 0
                                                        )

                                                )

                                        )

                                )

                            [End] =&gt; Array
                                (
                                    [coordinates] =&gt; Array
                                        (
                                            [0] =&gt; -121.961628
                                            [1] =&gt; 37.262282
                                            [2] =&gt; 0
                                        )
                                )
                        )
                )
        )
)</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=53&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2009/07/23/server-side-driving-direction-with-google-maps-api-with-php-for-wap-and-web/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>Install ffmpeg for alembik transcoding server with 51.40.4 on ubuntu</title>
		<link>http://mufumbo.wordpress.com/2009/05/07/install-ffmpeg-for-alembik-transcoding-server-with-51_40_4-on-ubuntu-oma-sti/</link>
		<comments>http://mufumbo.wordpress.com/2009/05/07/install-ffmpeg-for-alembik-transcoding-server-with-51_40_4-on-ubuntu-oma-sti/#comments</comments>
		<pubDate>Thu, 07 May 2009 12:31:07 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[transcoding]]></category>
		<category><![CDATA[3gp]]></category>
		<category><![CDATA[alembik]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[mediaserver]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[oma]]></category>
		<category><![CDATA[omasti]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[wurfl]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=14</guid>
		<description><![CDATA[I find the alembik transcode server a cool piece of software, but I found lots of caveats when started to use it. 
The most difficult part is that alembik supports only two versions of libavcodec for ffmpeg, so you must compile it from the sources, since they are quite old.
That happens because ffmpeg changes the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=14&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I find the <a title="alembik transcoder" href="http://alembik.sourceforge.com" target="_blank">alembik</a> <em>transcode server</em> a cool piece of software, but I found lots of caveats when started to use it. </p>
<p>The most difficult part is that alembik supports <strong>only two versions of libavcodec</strong> for ffmpeg, so you must <em>compile it from the sources</em>, since they are quite old.<br />
That happens because <em>ffmpeg changes the parameters from version to version</em> and the alembik team had choosen both <a href="http://alembik.cvs.sourceforge.net/viewvc/alembik/alembik-core/src/org/alembik/processing/ffmpeg_codec_51_40_4.properties?view=log">51.40.4</a> and <a href="http://alembik.cvs.sourceforge.net/viewvc/alembik/alembik-core/src/org/alembik/processing/ffmpeg_codec_51_48_0.properties?view=log">51.48.0</a> to be supported. I think that in the future it will be possible to have an external &#8220;.properties&#8221; file, so I hope that it will not be necessary to compile ffmpeg by hand, every time. </p>
<p>I&#8217;ve used this references:<br />
<a href="http://sourceforge.net/mailarchive/message.php?msg_name=48A176CC.8080300%40kimiasol.com">http://sourceforge.net/mailarchive/message.php?msg_name=48A176CC.8080300%40kimiasol.com</a> (here i&#8217;ve found the rpm of a ffmpeg with libavcodec version 51.40.4 to download)<br />
<a href="http://juliensimon.blogspot.com/2008/12/howto-compiling-ffmpeg-x264-mp3-xvid.html">http://juliensimon.blogspot.com/2008/12/howto-compiling-ffmpeg-x264-mp3-xvid.html</a> (this post teach how to install libamr from mediubuntu repository)</p>
<p>install both amr, you can install also from mediubuntu repo.</p>
<pre>
wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-6.1.0.4.tar.bz2
wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.1.tar.bz2
# apt-get install g++ nasm zlib1g-dev libx264-dev libfaad-dev faad liba52-0.7.4-dev libgsm1-dev libmp3lame-dev \
libtheora-dev libvorbis-dev libxvidcore4-dev libfaac-dev libimlib2-dev libfreetype6-dev</pre>
<p>Use an aplication to convert the rpm to tar and decompress it (with alien or something else):</p>
<pre># wget http://dag.wieers.com/rpm/packages/ffmpeg/ffmpeg-0.4.9-0.9.20070530.rf.src.rpm

# ./configure --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libfaad --enable-libfaac \
--enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared --enable-pthreads \
--enable-libtheora --enable-gpl --disable-strip --enable-libfaadbin --prefix=/usr/local --enable-swscaler --enable-libamr-wb
</pre>
<p>Install it as a package or with &#8220;make &amp;&amp; make install&#8221; and settup alembik with &#8220;ffmpeg.version=51.40.4&#8243;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=14&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2009/05/07/install-ffmpeg-for-alembik-transcoding-server-with-51_40_4-on-ubuntu-oma-sti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>How to correctly make Javascript onclick links and keep in mind SEO and compatibility</title>
		<link>http://mufumbo.wordpress.com/2008/08/22/how-to-correctly-make-javascript-onclick-links-and-keep-in-mind-seo-and-compatibility/</link>
		<comments>http://mufumbo.wordpress.com/2008/08/22/how-to-correctly-make-javascript-onclick-links-and-keep-in-mind-seo-and-compatibility/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 08:44:06 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[javascript compatibility ie6 ie7]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=10</guid>
		<description><![CDATA[Today I have faced a common problem with web developers: How to correctly make Javascript onclick links keep in mind SEO and compatibility. 
My solution was very simple, first of all, never use:

&#60;a href="javascript:void(0)" onclick="some_function('someparameter')"&#62;Text&#60;/a&#62;

This is the worst way of having javascript links. As discussed in this post this is a known issue of IE [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=10&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today I have faced a common problem with web developers: <em>How to correctly make Javascript onclick links keep in mind SEO and compatibility. </em></p>
<p>My solution was very simple, first of all, never use:<br />
<code><br />
&lt;a href="javascript:void(0)" onclick="some_function('someparameter')"&gt;Text&lt;/a&gt;<br />
</code></p>
<p>This is the worst way of having javascript links. As discussed in <a href="http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/d156ea8137cdd1b4/1c07ad60e4d8fe1f?q=IE+javascript%3Avoid&amp;rnum=3#1c07ad60e4d8fe1f">this post</a> this is a known issue of IE and why the use of the javascript pseudo-protocol for the value of HREF attributes is actively discouraged.</p>
<p>Suppose that you have an ajax box with tabs that allows you to refresh the content of the tabs with ajax. What would be the best way of assign onclick events to refresh the content with ajax?</p>
<p>What I did was:</p>
<ul>
<li>When the page is loaded the first tab is loaded in the server side, without ajax. In this way search engines can crawl the contents.</li>
<li>The link on the tabs points to the HREF of the current page with a parameter that permits to change the pre-selected tab in the server side when the page is loaded. Ex: <em>?sec=onlineusers</em> loads the page with the tab of onlineusers pre-selected and <em>?sec=lastusersers</em> load the page with lastusers pre-selected.</li>
<li>The link on the tabs have the event onclick associated with a function and it returns false.</li>
</ul>
<p>Code speaking:<code><br />
&lt;a href="?tabselection=onlineusers" onClick="changeTab('onlineusers');return false;"&gt;Online Users&lt;/a&gt;<br />
&lt;a href="?tabselection=lastusers" onClick="changeTab('lastusers');return false;"&gt;Last registered users&lt;/a&gt;</code></p>
<p>What are the advantages of this solution?</p>
<ul>
<li>If the user have javascript disabled he can still have a fully functional website.</li>
<li>Search engines and mobile phones can navigate without problem.</li>
<li>It is compatible with all browsers.</li>
</ul>
<p>For those who have already a website running, the simpliest way of having compatibility is to link the HREF to a page like <em>&#8220;/noJavaScriptEnabled.html&#8221;</em> and return false in the onclick event. Doing like this seems to be better than use the <em>&#8220;javascript:void(0)&#8221;</em> or point to the anchor <em>&#8220;#&#8221;</em>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mufumbo.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mufumbo.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=10&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2008/08/22/how-to-correctly-make-javascript-onclick-links-and-keep-in-mind-seo-and-compatibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>new audio toy &#8211; terratec dmx 6 fire usb</title>
		<link>http://mufumbo.wordpress.com/2008/05/30/new-audio-toy-terratec-dmx-6-fire-usb/</link>
		<comments>http://mufumbo.wordpress.com/2008/05/30/new-audio-toy-terratec-dmx-6-fire-usb/#comments</comments>
		<pubDate>Fri, 30 May 2008 21:06:41 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[home studio]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[recording]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=5</guid>
		<description><![CDATA[Today I have &#8220;invested&#8221; a reasonable amount of money in the Terratec DMX 6Fire USB witch seems to be a very cool toy! It&#8217;s engine runs at 24 bits / 192 kHz and promises crystal-clear sound with a with switched 48V phantom power, a -20 dB pad switch and separated gain controls.
Now I just have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=5&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today I have &#8220;invested&#8221; a reasonable amount of money in the <a title="Terratec DMX 6Fire USB" href="http://www.terratec.net/en/products/DMX_6Fire_USB_2084.html" target="_blank">Terratec DMX 6Fire USB</a> witch seems to be a very cool toy! It&#8217;s engine runs at 24 bits / 192 kHz and promises crystal-clear sound with a with switched 48V phantom power, a -20 dB pad switch and separated gain controls.</p>
<p>Now I just have to find the best software for starting recording. I am very used to <a href="http://www.samplitude.com">Magix Samplitude</a>, but my last recordings with the open source tool <a href="http://ardour.org/">Ardour2</a> under Linux were not bad at all! I hope I can use it easily with <a href="http://ubuntustudio.org/">Ubuntu Studio</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mufumbo.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mufumbo.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=5&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2008/05/30/new-audio-toy-terratec-dmx-6-fire-usb/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>database replication tools</title>
		<link>http://mufumbo.wordpress.com/2008/05/14/database-replication-tools/</link>
		<comments>http://mufumbo.wordpress.com/2008/05/14/database-replication-tools/#comments</comments>
		<pubDate>Wed, 14 May 2008 21:32:31 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[performance]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[database performance replication architecture]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=4</guid>
		<description><![CDATA[Today I was searching about &#8220;replication architectures&#8221; and found a very interesting presentation: Portable Scale-Out Benchmarks for MySQL that refers to GORDA &#8211; &#8220;Open Replication of Databases&#8220;. The following tools are the result of my search on that topic:
ESCADA is a opensource implementation of the GORDA replication server interface. It provides a full range of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=4&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today I was searching about <em>&#8220;<a title="Replication architectures google search" href="http://www.google.it/search?q=%E2%80%9Creplication+architectures%22&amp;btnG=Cerca&amp;hl=it&amp;client=firefox-a&amp;rls=com.ubuntu%3Aen-US%3Aofficial&amp;hs=tUj">replication architectures</a>&#8221; </em>and found a very interesting presentation: <a title="Portable Scale-Out Benchmarks for MySQL" href="http://en.oreilly.com/mysql2008/public/asset/attachment/2256">Portable Scale-Out Benchmarks for MySQL</a> that refers to <a href="http://gorda.di.uminho.pt/">GORDA</a> &#8211; &#8220;<em>Open Replication of Databases</em>&#8220;. The following tools are the result of my search on that topic:</p>
<p><a href="http://escada.sourceforge.net/">ESCADA</a> is a opensource implementation of the <a href="http://gorda.di.uminho.pt/">GORDA</a> replication server interface. It provides a full range of database replication options across a multiple database management systems, in a single inter-operable and evolutive package. Target application scenarios include:</p>
<ul>
<li>Asynchronous master-slave replication, the no-frills industry standard approach.</li>
<li>Consistent multi-master/update everywhere replication for scalable and high performance shared-nothing clusters.</li>
<li>Zero data-loss inter-cluster replication over WAN for mission critical applications and disaster recovery.</li>
</ul>
<p>&#8211;</p>
<p><a href="http://sequoia.continuent.org">SEQUOIA</a> is a database cluster <em>middleware</em> that allows any Java application to transparently access a cluster of databases through <a href="http://en.wikipedia.org/wiki/JDBC">JDBC</a>. You do not have to modify client applications, application servers or database server software. You just have to ensure that all database accesses are performed through <a href="http://en.wikipedia.org/wiki/JDBC">JDBC</a>.<a href="http://sequoia.continuent.org"></a></p>
<p><a href="http://sequoia.continuent.org">SEQUOIA</a> allows to achieve scalability, high availability and failover for database tiers. It instantiates the concept of <a title="RAIDb" href="http://www.webopedia.com/TERM/R/RAIDb.html"><em>Redundant Array of Inexpensive Databases</em></a> (RAIDb). The database is distributed and replicated among several nodes and <a href="http://sequoia.continuent.org">SEQUOIA</a> load balance the queries between these nodes. The server can be accessed from a generic JDBC driver, used by the clients. The client drivers forward the SQL requests to the <a href="http://sequoia.continuent.org">SEQUOIA</a> controller that balances them on a cluster of replicate d databases (reads are load balanced and writes are broadcasted).</p>
<p>&#8211;</p>
<p><a title="master to multiple slave" href="http://slony.info/">Slony-I</a> is a &#8220;master to multiple slaves&#8221;           replication system supporting cascading (<em>e.g.</em> &#8211; a node can feed another node which feeds another node&#8230;)  and failover.</p>
<p>The <em>big picture</em> for the development of <a title="master to multiple slave" href="http://slony.info/">Slony-I</a> is           that it is a master-slave replication system that includes           all features and capabilities needed to replicate large           databases to a reasonably limited number of slave           systems.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mufumbo.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mufumbo.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=4&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2008/05/14/database-replication-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
		<item>
		<title>simple script to merge commits from a bugzilla id</title>
		<link>http://mufumbo.wordpress.com/2008/05/10/simple-script-to-merge-commits-from-a-bugzilla-id/</link>
		<comments>http://mufumbo.wordpress.com/2008/05/10/simple-script-to-merge-commits-from-a-bugzilla-id/#comments</comments>
		<pubDate>Sat, 10 May 2008 21:15:07 +0000</pubDate>
		<dc:creator>mufumbo</dc:creator>
				<category><![CDATA[maintainability]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://mufumbo.wordpress.com/?p=3</guid>
		<description><![CDATA[Today i have made my first PERL script!
For me it is very painful when it arrives the time to merge, into another branch, all the commits that i have done in the &#8220;trunk&#8221;. I have searched a little and did not find anything that could magically solve all my problems. I know that it&#8217;s better [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=3&subd=mufumbo&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today i have made my first <a href="http://www.perl.com/">PERL</a> script!</p>
<p>For me it is very painful when it arrives the time to merge, into another branch, all the commits that i have done in the &#8220;trunk&#8221;. I have searched a little and did not find anything that could magically solve all my problems. I know that it&#8217;s better to create a separated branch when there are lot&#8217;s of commits, but there are some cases that a super-simple functionality can explode into a <a href="http://www.laputan.org/mud/">big ball of mud</a>.</p>
<p>Practically the script merge all the commits of a <a href="http://www.bugzilla.org/">bugzilla</a> id to another branch. If someone knows a standard way to do this; please tell me!</p>
<p>The script take three inputs:</p>
<ol>
<li>The starting revision ID to filter the search.</li>
<li>The SVN address of the source.</li>
<li>The search string to filter the results. Here you put your bugzilla bug id.</li>
</ol>
<p>Commands that are executed when you launch the script:</p>
<ol>
<li>Go to the directory of the destination branch.</li>
<li>To execute the script simply do:</li>
<li>svn_search_merge.pl 0 https://svn.example.com/main/trunk/ &#8220;1: &#8220;</li>
<li>Note that &#8220;1: &#8221; is the bugzilla bug id. What happens next is:</li>
<li>svn log -r 1:HEAD https://svn.example.com/main/trunk/</li>
<li>With that command we get the log of all commits from the revision 1 to the HEAD. After it&#8217;s just matter of check if the string &#8220;1: &#8221; is inside the log. Then we simply execute:</li>
<li>svn merge -r (ACTUAL_REVISION-1):ACTUAL_REVISION https://svn.example.com/main/trunk/</li>
</ol>
<p>Source code of the script:</p>
<pre>#!/usr/bin/perl

# Simple script to merge commits from a source branch to the current destination directory.
# http://mufumbo.wordpress.com/2008/05/10/simple-script-to-merge-commits-from-a-bugzilla-id/
#
# Example:
# $ cd my-branch-destination/
# $ svn_search_merge.pl 3000 https://svn.example.com/main/trunk/ "bug 673"
# Where 3000 is the starting revision and "bug 673" is the string to match in the comments.
#
use strict;
use warnings;

my $prev_revision = shift;
my $svnHost = shift;
my $searchStr = shift;

print "Starting Revision: $prev_revision\n";
print "SVN addr: $svnHost\n";
print "Search pattern: $searchStr\n";

my $buffer;
$buffer = `svn log -r $prev_revision:HEAD $svnHost`;
my $shouldContinue = "y";
LOGS: foreach my $changelog_entry (split(/----+/m, $buffer)) {
	if($changelog_entry =~ m/($searchStr)/) {
	        #my (undef, $info, undef, $comment) = split(/\n/, $changelog_entry);
	        #next unless $info =~ m/^r/;

		print "\n--------------------------------------------------";
		print $changelog_entry;
		my $revisionId = substr($changelog_entry, 2, 5);
		$revisionId =~ s/^\s+//;
		$revisionId =~ s/\s+$//;

		if ($shouldContinue ne 'a') {
			PROMPT: while(1) {
				print "\nShould continue with merge of revision '$revisionId'? (Yes,Always,Skip,Exit): ";
				$shouldContinue = &lt;&gt;;
				chomp($shouldContinue);

				last PROMPT if $shouldContinue eq 'y';
				last PROMPT if $shouldContinue eq 'a';
				next LOGS if $shouldContinue eq 's';
				die("User requested to stop.") if $shouldContinue eq 'e';
			}
		}
		else {
			print "\nAuto merging '$revisionId'\n";
		}

		my $pRevisionId = $revisionId-1;
		my $mergeBuffer = `svn merge -r $pRevisionId:$revisionId $svnHost`;
		print $mergeBuffer;
	}
}</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mufumbo.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mufumbo.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mufumbo.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mufumbo.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mufumbo.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mufumbo.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mufumbo.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mufumbo.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mufumbo.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mufumbo.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mufumbo.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mufumbo.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mufumbo.wordpress.com&blog=3694990&post=3&subd=mufumbo&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mufumbo.wordpress.com/2008/05/10/simple-script-to-merge-commits-from-a-bugzilla-id/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/969c3fad95d15a3394b981b60240900c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mufumbo</media:title>
		</media:content>
	</item>
	</channel>
</rss>