<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>IsraelWebDev</title>
	<atom:link href="http://israelwebdev.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://israelwebdev.wordpress.com</link>
	<description>A Tech Blog</description>
	<lastBuildDate>Sun, 16 Oct 2011 12:10:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='israelwebdev.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/ad9f70e3d14e2fd490840ca309b18859?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>IsraelWebDev</title>
		<link>http://israelwebdev.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://israelwebdev.wordpress.com/osd.xml" title="IsraelWebDev" />
	<atom:link rel='hub' href='http://israelwebdev.wordpress.com/?pushpress=hub'/>
		<item>
		<title>BuddyPress Metas &amp; Title using xprofile field data</title>
		<link>http://israelwebdev.wordpress.com/2011/08/17/buddypress-metas-title-using-xprofile-field-data/</link>
		<comments>http://israelwebdev.wordpress.com/2011/08/17/buddypress-metas-title-using-xprofile-field-data/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 20:43:20 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[buddypress]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=100</guid>
		<description><![CDATA[Populating the BuddyPress user Profile page&#8217;s title, meta description, and meta keywords with some of the user-generated content, delivered via xprofile fields, seems so much better than the default options, or even what&#8217;s available in seopress, the only current BuddyPress SEO plugin. While we&#8217;re at it, setting the on-page SEO data for Activities based on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=100&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Populating the BuddyPress user Profile page&#8217;s title, meta description, and meta keywords with some of the user-generated content, delivered via xprofile fields, seems so much better than the default options, or even what&#8217;s available in <a href="http://wordpress.org/extend/plugins/seopress/">seopress</a>, the only current BuddyPress SEO plugin.</p>
<p>While we&#8217;re at it, setting the on-page SEO data for Activities based on the content is a great move too.</p>
<p>You&#8217;ll have to modify the fields based on the data you have available, and what fields feed into which page data, but this code, placed in your theme&#8217;s <em>functions.php</em> file, is a good start.<br />
Want to make a plugin based on this code for the lay-men? Feel free.</p>
<p>Note: extractCommonWords function based on the function <a href="http://www.hashbangcode.com/blog/extract-keywords-text-string-php-412.html">here</a>.</p>
<pre>function bp_xprofile_title($title=null, $without_site_name=null){
	global $bp, $current_blog;

	if(defined('BP_ENABLE_MULTIBLOG')){
		$blog_title=get_blog_option($current_blog-&gt;blog_id,'blogname');
	}else {
		$blog_title=get_blog_option(BP_ROOT_BLOG,'blogname');
	}

	if(bp_is_user_profile()){
		$title_array = array();
		if($data = xprofile_get_field_data( 'Company Name', $bp-&gt;displayed_user-&gt;id))
			$title_array[] = "$data ({$bp-&gt;displayed_user-&gt;fullname})";
		if($data = xprofile_get_field_data( 'Business Overview', $bp-&gt;displayed_user-&gt;id))
			$title_array[] = $data;
		$title_array[] = $blog_title;
		$title = mb_strimwidth(strip_tags( esc_attr( implode( ' | ', $title_array))), 0, 70, '...');
	}
	if (bp_is_activity_component() &amp;&amp; is_numeric( $bp-&gt;current_action )) {
		$activity = bp_activity_get_specific( array( 'activity_ids' =&gt; $bp-&gt;current_action ) );
		if ( $activity = $activity['activities'][0])
			if(!empty($activity-&gt;content))
				$title = mb_strimwidth(preg_replace("/[^A-Za-z0-9\s\s+\-]/", "", strip_tags( $activity-&gt;content)), 0, 70-3-3-strlen($blog_title), '...') . " &#124; $blog_title";
	}
	return $title;
}
add_filter('bp_page_title', 'bp_xprofile_title',0);

function extractCommonWords($string){
	$stopWords = array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','when','where','who','will','with','und','the','www');

	$string = strip_tags($string);
	$string = trim($string); // trim the string
	$string = preg_replace('/[^a-zA-Z0-9\s\s+\-]/', '', $string); // only take alphanumerical characters, but keep the spaces and dashes too…
	$string = strtolower($string); // make it lowercase

	preg_match_all('/\b.*?\b/i', $string, $matchWords);
	$matchWords = $matchWords[0];

	foreach ( $matchWords as $key=&gt;$item ) {
		if ( $item == '' || in_array(strtolower($item), $stopWords) || strlen($item) &lt;= 3 ) {
			unset($matchWords[$key]);
		}
	}
	$wordCountArr = array();
	if ( is_array($matchWords) ) {
		foreach ( $matchWords as $key =&gt; $val ) {
			$val = strtolower($val);
			if ( isset($wordCountArr[$val]) ) {
				$wordCountArr[$val]++;
			} else {
				$wordCountArr[$val] = 1;
			}
		}
	}
	arsort($wordCountArr);
	$wordCountArr = array_slice($wordCountArr, 0, 10);
	return array_keys($wordCountArr);
}

function bp_xprofile_meta()
{
	global $bp;

	if(bp_is_user_profile()){
		$array = array();
		if($data = xprofile_get_field_data( 'Business Category', $bp-&gt;displayed_user-&gt;id))
			$array[] = htmlspecialchars_decode($data);
		if($data = xprofile_get_field_data( 'Years of Experience', $bp-&gt;displayed_user-&gt;id))
			$array[] = "$data years experience";
		if($data = xprofile_get_field_data( 'Location', $bp-&gt;displayed_user-&gt;id))
			$array[] = $data;
		if($data = xprofile_get_field_data( 'Business Overview', $bp-&gt;displayed_user-&gt;id))
			$array[] = $data;

		$desc = mb_strimwidth(preg_replace("/[^A-Za-z0-9\s\s+\-&amp;]/", "", strip_tags( implode( ' - ', $array))), 0, 150, '...');

		echo '&lt;meta name="description" content="'.$desc.'" /&gt;';

		if($data = xprofile_get_field_data( 'Profile Details', $bp-&gt;displayed_user-&gt;id))
			$array[] = $data;
		if($data = xprofile_get_field_data( 'Company Name', $bp-&gt;displayed_user-&gt;id))
			$array[] = $data;
		$array[] = $bp-&gt;displayed_user-&gt;fullname;

		$key_text = preg_replace("/[^A-Za-z0-9\s\s+\-]/", "", strip_tags( implode( ' ', $array)));
		$keys = extractCommonWords($key_text);
		echo '&lt;meta name="keywords" content="'.implode(',', $keys).'" /&gt;';
	}

	if (bp_is_activity_component() &amp;&amp; is_numeric( $bp-&gt;current_action )) {
		$activity = bp_activity_get_specific( array( 'activity_ids' =&gt; $bp-&gt;current_action ) );
		if ( $activity = $activity['activities'][0])
			if(!empty($activity-&gt;content)){
				$content = preg_replace("/[^A-Za-z0-9\s\s+\-]/", "", strip_tags( $activity-&gt;content));
				echo '&lt;meta name="description" content="'. mb_strimwidth($content, 0, 150, '...').'" /&gt;';

				$keys = extractCommonWords($content);
				echo '&lt;meta name="keywords" content="'.implode(',', $keys).'" /&gt;';
			}
	}
}
add_action('wp_head', 'bp_xprofile_meta',1);</pre>
<br />Filed under: <a href='http://israelwebdev.wordpress.com/category/wordpress/buddypress/'>BuddyPress</a>, <a href='http://israelwebdev.wordpress.com/category/php/'>PHP</a>, <a href='http://israelwebdev.wordpress.com/category/wordpress/'>Wordpress</a> Tagged: <a href='http://israelwebdev.wordpress.com/tag/buddypress-2/'>buddypress</a>, <a href='http://israelwebdev.wordpress.com/tag/seo/'>seo</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=100&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2011/08/17/buddypress-metas-title-using-xprofile-field-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Network store in an instant!</title>
		<link>http://israelwebdev.wordpress.com/2011/03/28/wordpress-network-store-in-an-instant/</link>
		<comments>http://israelwebdev.wordpress.com/2011/03/28/wordpress-network-store-in-an-instant/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 22:09:15 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[marketpress]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=94</guid>
		<description><![CDATA[I&#8217;m getting really excited to use WPMU&#8216;s MarketPress e-commerce plugin on the new JobShuk website. As I wrote in this Tweet to the guy behind WordPress&#8217; most popular e-commerce plugin for standalone installs, the 2 most exciting features of MarketPress are the unified marketplace across all users and revenue sharing. That means visitors can search/browse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=94&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting really excited to use <a href="http://premium.wpmudev.org/">WPMU</a>&#8216;s <a href="http://premium.wpmudev.org/project/e-commerce">MarketPress</a> e-commerce plugin on the new JobShuk website.</p>
<p>As I wrote in <a href="http://twitter.com/IsraelWebDev/statuses/35796788652806145">this Tweet</a> to the guy behind WordPress&#8217; most popular e-commerce plugin for standalone installs, the 2 most exciting features of MarketPress are the unified marketplace across all users and revenue sharing. That means visitors can search/browse products contained in all the individual stores. Additionally, the Marketplace admin (me) can take a small percentage of the purchase price without getting into drop-shipping, affiliate payments, etc. That&#8217;s some easy money.</p>
<p>Now if only I could get MarketPress <a href="http://wpmu.org/wpmu-dev-membership-for-life/">free for life</a>. That would be a dream&#8230;</p>
<br />Filed under: <a href='http://israelwebdev.wordpress.com/category/wordpress/'>Wordpress</a> Tagged: <a href='http://israelwebdev.wordpress.com/tag/marketpress/'>marketpress</a>, <a href='http://israelwebdev.wordpress.com/tag/multisite/'>multisite</a>, <a href='http://israelwebdev.wordpress.com/tag/wordpress-2/'>wordpress</a>, <a href='http://israelwebdev.wordpress.com/tag/wpmu/'>wpmu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=94&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2011/03/28/wordpress-network-store-in-an-instant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>Android Spinner, ArrayAdapter, and NullPointerException</title>
		<link>http://israelwebdev.wordpress.com/2011/01/12/android-spinner-arrayadapter-and-nullpointerexception/</link>
		<comments>http://israelwebdev.wordpress.com/2011/01/12/android-spinner-arrayadapter-and-nullpointerexception/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 23:20:06 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ArrayAdapter]]></category>
		<category><![CDATA[NullPointerException]]></category>
		<category><![CDATA[Spinner]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=92</guid>
		<description><![CDATA[This might be obvious, if you&#8217;re bothering to read this, but when populating an Android Spinner with an ArrayAdapter, sourced by an array, the source array must not contain uninitialized elements. For example, if you&#8217;re doing this: String[] colors = new String[colors_json.length()+1]; for(int m=1; m&#60;=colors_json.length(); m++){ if(colors_json.has("label")){ colors[m] = colors_json.getString("label"); } } then you might [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=92&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This might be obvious, if you&#8217;re bothering to read this, but when populating an Android Spinner with an ArrayAdapter, sourced by an array, the source array must not contain uninitialized elements.</p>
<p>For example, if you&#8217;re doing this:</p>
<pre>String[] colors = new String[colors_json.length()+1];
for(int m=1; m&lt;=colors_json.length(); m++){
	if(colors_json.has("label")){
		colors[m] = colors_json.getString("label");
	}
}</pre>
<p>then you might encounter a case when there are uninitialized elements in colors.</p>
<p>Instead, you can try something like this:</p>
<pre>String[] colors0 = new String[colors_json.length()+1];
int index = 1;
for(int m=1; m&lt;=colors_json.length(); m++){
	if(colors_json.has("label")){
		colors0[index] = colors_json.getString("label");
		index++;
	}
}
colors = new String[index];
System.arraycopy(colors0, 1, colors, 1, index-1);</pre>
<p>You can then continue safely to set:</p>
<pre>colors[0] = "Color";
color_adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, colors);
color_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
color_spinner.setAdapter(color_adapter);</pre>
<p>without concern of hitting a nasty NullPointerException.</p>
<br />Filed under: <a href='http://israelwebdev.wordpress.com/category/android/'>Android</a> Tagged: <a href='http://israelwebdev.wordpress.com/tag/arrayadapter/'>ArrayAdapter</a>, <a href='http://israelwebdev.wordpress.com/tag/nullpointerexception/'>NullPointerException</a>, <a href='http://israelwebdev.wordpress.com/tag/spinner/'>Spinner</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=92&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2011/01/12/android-spinner-arrayadapter-and-nullpointerexception/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>Automatically update your php_browscap.ini</title>
		<link>http://israelwebdev.wordpress.com/2010/10/19/automatically-update-your-php_browscap-ini/</link>
		<comments>http://israelwebdev.wordpress.com/2010/10/19/automatically-update-your-php_browscap-ini/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 17:11:16 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[browscap]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=88</guid>
		<description><![CDATA[My website uses the PHP function get_browser to see if a client is Javascript enabled. (I use this primarily to see if the visitor is a search engine bot and should see a long list of data or a real person and can handle AJAX-loaded data in tabs &#8211; most real people these days are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=88&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My website uses the PHP function get_browser to see if a client is Javascript enabled. (I use this primarily to see if the visitor is a search engine bot and should see a long list of data or a real person and can handle AJAX-loaded data in tabs &#8211; most real people these days are using Javascript-enabled browsers.)</p>
<p>get_browser relies on the php_browscap.ini file, and the problem is that keeping the php_browscap.ini file up-to-date can be a chore, and should certainly be done automatically. (I notice the problem now that I use Chrome, and with every major release, the browscap file has no clue about my new browser, which is silly.)</p>
<p>So I finally sat down and wrote a basic script to fetch the updated file and restart my web server, which I&#8217;ll run weekly. This works for my FreeBSD box &#8211; change the paths and download command to fit your installation.</p>
<pre>/usr/local/bin/wget -Ophp_browscap.ini "http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI"
mv -f /usr/local/etc/php/php_browscap.ini /usr/local/etc/php/php_browscap.old.ini
mv -f php_browscap.ini /usr/local/etc/php/
/usr/local/etc/rc.d/apache22 restart
</pre>
<p>I saved to: usr/local/www/mysite.com/get_php_browscap.sh<br />
Then add it to your crontab:</p>
<pre># php_browscap update
5       4       *       *       6       root    /usr/local/www/mysite.com/get_php_browscap.sh &gt;&gt; /var/log/cron.log
</pre>
<p>I run it Saturday morning.<br />
Any questions?</p>
<br />Filed under: <a href='http://israelwebdev.wordpress.com/category/ajax/'>AJAX</a>, <a href='http://israelwebdev.wordpress.com/category/javascript/'>Javascript</a>, <a href='http://israelwebdev.wordpress.com/category/php/'>PHP</a> Tagged: <a href='http://israelwebdev.wordpress.com/tag/browscap/'>browscap</a>, <a href='http://israelwebdev.wordpress.com/tag/php/'>PHP</a>, <a href='http://israelwebdev.wordpress.com/tag/script/'>script</a>, <a href='http://israelwebdev.wordpress.com/tag/update/'>update</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=88&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2010/10/19/automatically-update-your-php_browscap-ini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>How to browse PHP&#8217;s print_r output the right way</title>
		<link>http://israelwebdev.wordpress.com/2010/06/16/how-to-browse-phps-print_r-output-the-right-way/</link>
		<comments>http://israelwebdev.wordpress.com/2010/06/16/how-to-browse-phps-print_r-output-the-right-way/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 20:52:18 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[notepad++]]></category>
		<category><![CDATA[print_r]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=85</guid>
		<description><![CDATA[Browse PHP's print_r output using Notepad++ and selecting Language-&#62;Matlab<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=85&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had the pleasure recently of working with some complex object oriented PHP with massive objects or lists of objects. The easiest way to have a look at your data for analyzing and debugging is to <a href="http://php.net/print_r">print_r</a> it. Unfortunately, skimming through this data can be tedious, especially if you want to skip a couple of large, nested objects that are irrelevant to your data analysis.</p>
<p>When programming, I always keep <a href="http://notepad-plus-plus.org/">Notepad++</a> open so I can keep a bunch of data accesible in tabs, such as notes, texts, data files, etc (and my tabs of saved files are seamlessly preserved between sessions, which is critical, of course). Notepad++ can handle bunches of different file formats out of the box, but PHP print_r isn&#8217;t one of them.</p>
<p>So I&#8217;ve pasted my print_r output into Notepad++, and the new file language is &#8220;Normal Text&#8221;. Immediately, bracket matching/highlighting works, which is great. I can go to an opening parens and see where it ends. So that&#8217;s it, right? Well, Notepad++ can also do code folding, like when you&#8217;re browsing a class, and you want to see all the class functions without all that pesky function code cluttering your view. So if you&#8217;ve got a PHP file open, for example, you can either click the [-]  to the left of the code to fold that function, or go to View-&gt;Fold All, and then just click [+] to open the class and see the top-level items in the class in plain view.</p>
<p>So what about the print_r? <strong>Matlab</strong>! I haven&#8217;t used Matlab since my first or second year in engineering school, and never thought it would useful, but here it is. I don&#8217;t remember what the code looks like, and I don&#8217;t care. All I know is that when I select Language-&gt;Matlab, it let&#8217;s me do code folding on my print_r output, and that&#8217;s all that matters. A bunch of the other languages work well too, or the same as Matlab, but it was the first and best for my needs.</p>
<p>FYI, this breaks if you have variable data containing a chunk of text with newlines and whatnot, but so it goes.</p>
<br />Filed under: <a href='http://israelwebdev.wordpress.com/category/hardware/'>Hardware</a>, <a href='http://israelwebdev.wordpress.com/category/php/'>PHP</a> Tagged: <a href='http://israelwebdev.wordpress.com/tag/matlab/'>Matlab</a>, <a href='http://israelwebdev.wordpress.com/tag/notepad/'>notepad++</a>, <a href='http://israelwebdev.wordpress.com/tag/php/'>PHP</a>, <a href='http://israelwebdev.wordpress.com/tag/print_r/'>print_r</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=85&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2010/06/16/how-to-browse-phps-print_r-output-the-right-way/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>(PHP) Timestamp for a WORKING date/time a number of minutes/days from a given start date</title>
		<link>http://israelwebdev.wordpress.com/2009/12/03/php-timestamp-for-a-working-datetime-a-number-of-minutesdays-from-a-given-start-date/</link>
		<comments>http://israelwebdev.wordpress.com/2009/12/03/php-timestamp-for-a-working-datetime-a-number-of-minutesdays-from-a-given-start-date/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 11:52:30 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[days]]></category>
		<category><![CDATA[hours]]></category>
		<category><![CDATA[minutes]]></category>
		<category><![CDATA[offset]]></category>
		<category><![CDATA[working]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=73</guid>
		<description><![CDATA[That title long enough? It&#8217;s hard to describe this function, but you get it now, right? Based on this function here. /** * getTimePlusOffsetDuringWork * * The function returns the timestamp of a date + business minutes * @param timestamp&#124;string startDate Beginning date/time as base for offset * @param numeric offsetMinutes Work minutes to add [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=73&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>That title long enough? It&#8217;s hard to describe this function, but you get it now, right?</p>
<p>Based on <a href="http://forums.codewalkers.com/php-coding-7/how-do-i-calculate-the-number-of-working-days-from-880234.html" target="_blank">this function here</a>.</p>
<pre>/**
* getTimePlusOffsetDuringWork
*
* The function returns the timestamp of a date + business minutes
* @param timestamp|string startDate Beginning date/time as base for offset
* @param numeric offsetMinutes Work minutes to add to the startDate
* @param mixed Array of holiday dates, preferrably in the 'MM-DD' format
* @return integer Timestamp for the resulting time during Work hours,
*     given the simple equation StartDate + offsetMinutes.
*     Ignores after-hours, weekends, and holidays [for the first year after the startDate].
* Limitations: too many to list entirely.
*     9am-5pm work day only
*     1 year of holidays only
*     no week/weekday dependent holidays
*     Need to set timezone prior to calling this function if used outside of the server's timezone
*     Relies on English locale setting
* @author Zvi Landsman
**/
function getTimePlusOffsetDuringWork($startDate,$offsetMinutes,$holidays=array("12-25","12-26","01-01","07-04")){
    $j = $i = 0; //changed this to 0 or you were always starting one day ahead
    $tmp1 = validation::is_timestamp($startDate)?$startDate:strtotime($startDate); //worked out a timstamp to start with
    $offsetMinutes = round($offsetMinutes);
    $simple_time = strtotime("+$offsetMinutes minutes", $tmp1);
    if($simple_time &lt;= strtotime('17:00', $tmp1))
    {
        //offset is still today
        return $simple_time;
    }
    //Check if start time is after-hours
    if ($tmp1 &gt; strtotime('17:00', $tmp1))
    {
        $tmp1 = strtotime("09:00 +1 day", $tmp1);
    }
    //This checks if the minute offset puts us into tomorrow
    $newdate = $tmp1;
    $minutes_left = $offsetMinutes%480;
    $newtime = strtotime("+ $minutes_left minutes", $newdate);
    if($newtime &gt; strtotime('17:00', $newdate))
    {
        $j++;
        $minutes_left = round(($newtime - strtotime('17:00', $newdate))/60);
        $tmp1 = strtotime("+ $minutes_left minutes", strtotime("09:00 +1 day", $tmp1));
    }
    else
    {
        $tmp1 = strtotime("+ $minutes_left minutes", $tmp1);
    }

    //create the holiday list for the first upcoming occurances only
    $holidayList = array();
    foreach ($holidays as $holiday)
    {
        $time_stamp=strtotime($holiday, $tmp1);

        $date=($time_stamp &lt; $tmp1)?
            strftime("%d-%m-%Y",strtotime($holiday.' +1 year')):
            strftime("%d-%m-%Y",$time_stamp);
        $holidayList[] = $date;
    }

    $days_to_offset = floor($offsetMinutes/480);
    while($i &lt; $days_to_offset)
    {
        $tmp2 = strtotime("+$j day", $tmp1);
        $day = strftime("%A",$tmp2);

        $tmp = strftime("%d-%m-%Y",$tmp2);
        if(($day != "Sunday") &amp;&amp; ($day != "Saturday" )&amp;&amp;(!in_array($tmp, $holidayList)))
        {
            $i = $i + 1;
            $j = $j + 1;

        }
        else
        {
            $j = $j + 1;

        }
    }
    //$j = $j -1;
    return strtotime("+$j days",$tmp1);
}
</pre>
<p>I&#8217;m completely open to improvements in the comments.</p>
<br />Posted in PHP Tagged: date, days, hours, minutes, offset, PHP, working <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=73&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2009/12/03/php-timestamp-for-a-working-datetime-a-number-of-minutesdays-from-a-given-start-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>How to play an .asf stream on the iPhone/iPod Touch</title>
		<link>http://israelwebdev.wordpress.com/2009/10/24/how-to-play-an-asf-stream-on-the-iphoneipod-touch/</link>
		<comments>http://israelwebdev.wordpress.com/2009/10/24/how-to-play-an-asf-stream-on-the-iphoneipod-touch/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 23:38:17 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=69</guid>
		<description><![CDATA[I loved adding my Shoutcast, AOL Radio and Last.fm apps to my iPod, but I was bummed when I couldn&#8217;t play my favorite O&#38;A stream on my Touch, because it was in .asf format. I&#8217;ve never been one to pay attention to file format. I mean, if my winamp lite couldn&#8217;t play any audio, Iwas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=69&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I loved adding my Shoutcast, AOL Radio and Last.fm apps to my iPod, but I was bummed when I couldn&#8217;t play my favorite <a href="http://www.spreadtheonavirus.com/" target="_blank">O&amp;A stream</a> on my Touch, because it was in .asf format. I&#8217;ve never been one to pay attention to file format. I mean, if my winamp lite couldn&#8217;t play any audio, Iwas sure there was a plug-in for it. But this darn iPhone&#8230;</p>
<p>Anyway, I looked for a bunch of solutions, but none of them worked. I gave up and tried again a few weeks later, and noticed something out the corner of my eye.</p>
<p>My video re-streamer, the only damn solution I could find to being able to browse my network and play networked files, supported re-streaming Internet Radio too, in any standard format my computer can play/decode. Thank you again Orb/Orblive !</p>
<p><a href="http://www.orb.com"><img class="alignnone" title="Orb iPhone audio/video re-streamer" src="http://www.orb.com/themes/orb/orb/images/header.gif" alt="" width="270" height="82" /></a>It took me a while to figure out how to add it &#8211; I did it through the browser, but then I realized I can do it from my iPhone app. Anyway, thanks for almost getting it (almost) right iPhone.</p>
<p>[Yeah, I upgraded from my $12 mp3 player to a Touch - it just made sense for replacing my Palm Pilot too]</p>
<br />Posted in Hardware  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=69&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2009/10/24/how-to-play-an-asf-stream-on-the-iphoneipod-touch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>

		<media:content url="http://www.orb.com/themes/orb/orb/images/header.gif" medium="image">
			<media:title type="html">Orb iPhone audio/video re-streamer</media:title>
		</media:content>
	</item>
		<item>
		<title>Scriptaculous Image Hover Effect</title>
		<link>http://israelwebdev.wordpress.com/2009/06/16/scriptaculous-image-hover-effect/</link>
		<comments>http://israelwebdev.wordpress.com/2009/06/16/scriptaculous-image-hover-effect/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 22:20:16 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Script.aculo.us]]></category>
		<category><![CDATA[Effect]]></category>
		<category><![CDATA[Hover]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Scriptaculous]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=59</guid>
		<description><![CDATA[I&#8217;ll start with my editorializing; perhaps we (earlier Symfony/RoR users) chose poorly when integrating Prototype and Scriptaculous into the framework. It seems that jQuery is taking over, and a look at some of the Plugins being made for Symfony 1.2 are recognizing this, and moving some of the &#8220;Protaculous&#8221; functions out of the core and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=59&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll start with my editorializing; perhaps we (earlier Symfony/RoR users) chose poorly when integrating Prototype and Scriptaculous into the framework. It seems that jQuery is taking over, and a look at some of the Plugins being made for Symfony 1.2 are recognizing this, and moving some of the &#8220;Protaculous&#8221; functions out of the core and developing for jQuery. A search for specific Scriptaculous snippets provide fewer or no results relative to the same search for a jQuery snippet. Live and Learn.</p>
<p>Anyway, I was hoping to add some animation/effects to my otherwise very static <a href="http://JobShuk.com" target="_blank">website</a>, and thought a simple hover-popup on the profile images could provide a small yet effective effect to give the site some modern motion. Here&#8217;s how I did it with the latest attempt for Scriptaculous Effects.</p>
<p>Based on these functions mentioned in the question <a href="http://www.experts-exchange.com/Programming/Languages/Scripting/Q_22730631.html">here</a>, I created these still simple functions:</p>
<blockquote>
<pre>var z1=0;
<pre>function popIn(ev) {
  item = Event.element(ev);
  if(!item.id)item.id='pop_'+(++z1);
  new Effect.Scale(item, 110, {scaleFromCenter:true,
    duration: .4, queue:{ position: 'end', scope: item.id }});
}

function popOut(ev) {
  item = Event.element(ev);
  new Effect.Scale(item, 91, {scaleFromCenter:true,
    duration: .4, queue:{ position: 'end', scope: item.id }});
}</pre>
</pre>
</blockquote>
<p>For some brief explanation, these functions to be called on moveover/out events identify the item, if the item has no id, it creates one for it. The Scale effect &#8220;smoothly&#8221; zooms the element, and uses a scoped queue so that the zoom out will only be triggered after the zoom in completes, but multiple images can be zooming at once.</p>
<p>The effects can be attached with a call such as:</p>
<blockquote>
<pre>z=$$('.profile img');
z.each(function(n) {
  n.absolutize();
  n.observe('mouseover', popIn);
  n.observe('mouseout', popOut);
});</pre>
</blockquote>
<p>[Editor's note: it was brought to my attention that the above call might fail if the images (when attaching to images) were not yet loaded. As such, we should wrap the above call in a</p>
<blockquote>
<pre>Event.observe(window, 'load', function() {...});</pre>
</blockquote>
<p>if the images are loaded with the document, or if they're loaded later (e.g. AJAX), deal with both cases, when the images are and are not yet loaded:</p>
<blockquote>
<pre>z=$$('.profile img');
z.each(function(n) {
  if(n.complete){
    n.absolutize();
    n.observe('mouseover', popIn);
    n.observe('mouseout', popOut);
  }else{
    n.observe('load', function(ev) {
      n=Event.element(ev);n.absolutize();
      n.observe('mouseover', popIn);
      n.observe('mouseout', popOut);
    });
  }
});</pre>
</blockquote>
<p>]</p>
<p>Use the selector to find the elements to zoom, and attach the event observers to each.<br />
Place this code after the elements are loaded, and BAM, you&#8217;re good to go. It&#8217;s nothing too fancy, but it works.</p>
<p>There&#8217;s a similar effect with jQuery found <a href="http://www.sohtanaka.com/web-design/fancy-thumbnail-hover-effect-w-jquery/" target="_blank">here</a> which uses more CSS and seems prettier. I&#8217;m open to improvements to this snippet.</p>
<p>As an aside, the only decent site I&#8217;ve found with a few custom-made snippets is the <a href="http://scriptaculoussamplr.leonardofaria.net/">Script.aculo.us Samplr</a> (see the sidebar, not the main area). If only there were more of these, Scriptaculous might have a chance for survival.</p>
<br />Posted in Design, Javascript, Prototype, Script.aculo.us Tagged: Effect, Hover, Image, Scriptaculous <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=59&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2009/06/16/scriptaculous-image-hover-effect/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
		<item>
		<title>How to Embed AJAX(!) Forms in Symfony 1.2 Admin Generator</title>
		<link>http://israelwebdev.wordpress.com/2009/05/04/how-to-embed-ajax-forms-in-symfony-12-admin-generator/</link>
		<comments>http://israelwebdev.wordpress.com/2009/05/04/how-to-embed-ajax-forms-in-symfony-12-admin-generator/#comments</comments>
		<pubDate>Mon, 04 May 2009 18:27:50 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[1.2]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[forms]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=53</guid>
		<description><![CDATA[Based on a few informative articles, helping a veteran Symfony 1.0 programmer navigate through the 1.2 form structure, I was able to embed forms in an admin generated form based on a one-to-many relationship. See those articles at: How to Embed Forms in Symfony 1.2 Admin Generator Interactive embedded forms For the sake of speed, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=53&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Based on a few informative articles, helping a veteran Symfony 1.0 programmer navigate through the 1.2 form structure, I was able to embed forms in an admin generated form based on a one-to-many relationship. See those articles at:</p>
<p><a href="http://sandbox-ws.com/how-to-embed-forms-in-symfony-12-admin-generator-part-2" target="_blank">How to Embed Forms in Symfony 1.2 Admin Generator</a><br />
<a href="http://redotheoffice.com/?p=42" target="_blank">Interactive embedded forms</a></p>
<p>For the sake of speed, though, I wanted to be able to add more embedded forms dynamically via AJAX before submitting the whole form. Here&#8217;s how I did it:</p>
<p>Adding the initial forms; on edit, load the related objects with a delete button; on new object or edit, add 3 blank embedded forms to start with.</p>
<pre><span><span class="comment">// lib/forms/PoForm.class.php</span><span class="keyword">
public</span><span> </span><span class="keyword">function</span><span> configure() {
</span></span>  sfLoader::loadHelpers(array('jQuery','Asset','Tag','Url'));
   $index = 0;
   foreach ($this-&gt;getObject()-&gt;getItemPos() as $book){
    $this-&gt;embedForm('item_pos'.++$index, new ItemPoForm($book));
    $label = "Item $index".jq_link_to_remote(image_tag('/sf/sf_admin/images/delete'), array(
      'url'     =&gt;  'po/deleteItem?idd='.$book-&gt;getId(),
      'success' =&gt;  "jQuery('.sf_admin_form_field_item_pos$index').remove();",
      'confirm' =&gt; 'Sure???',
    ));
    $this-&gt;widgetSchema-&gt;setLabel('item_pos'.$index,$label);
  }
  $a=sfContext::getInstance()-&gt;getUser()-&gt;getAttribute('N1added'.$this-&gt;getObject()-&gt;getId());
  $more = $this-&gt;getObject()-&gt;isNew()?max(3,$a-$index):($a&gt;($index+3)?$a-$index:3);
  for($i=0;$i&lt;$more;$i++){
    $ip = new ItemPo();
    $ip-&gt;setPo($this-&gt;getObject());
    $this-&gt;embedForm('item_pos'.++$index, new ItemPoForm($ip));
    $this-&gt;widgetSchema-&gt;setLabel('item_pos'.$index,"Item $index");
  }

  $label = "Item $index".jq_link_to_remote(image_tag('/sf/sf_admin/images/add'), array(
    'url'     =&gt;  'po/addItems?po='.$this-&gt;getObject()-&gt;getId().'&amp;index='.$index,
    'update'  =&gt;  'sf_fieldset_none',
    'position'=&gt;  'bottom',
  ));
  $this-&gt;widgetSchema-&gt;setLabel('item_pos'.$index,$label);

  sfContext::getInstance()-&gt;getUser()-&gt;setAttribute('N1added'.$this-&gt;getObject()-&gt;getId(), $index);
}</pre>
<p>The last item on our list gets an &#8220;add&#8221; image, which makes an AJAX call to add new blank forms.<br />
You can see we also use a user attribute to store how many embedded forms are being displayed, so we know what index we&#8217;re up to when we add more forms, and we know how many forms to regenerate on error.</p>
<p>Let&#8217;s create the add and delete actions-</p>
<pre>// apps/frontend/modules/po/actions/actions.class.php
public function executeDeleteItem(sfWebRequest $request) {
   $sub_category = ItemPoPeer::retrieveByPK($request-&gt;getParameter('idd'));
  if (!$sub_category) {return $this-&gt;renderText('Error '.$request-&gt;getParameter('idd'));}
  $sub_category-&gt;delete();
  if (!$this-&gt;getRequest()-&gt;isXmlHttpRequest()){
    $this-&gt;redirect('@po_edit?id='.$sub_category-&gt;getPo()-&gt;getId());
  }
  return $this-&gt;renderText('');
 }
 public function executeAddItems(sfWebRequest $request){
  $po = $request-&gt;getParameter('po');
  $index = sfContext::getInstance()-&gt;getUser()-&gt;getAttribute('N1added'.$po);
  sfLoader::loadHelpers(array('jQuery','Asset','Tag','Url'));
  $form = new PoForm();
  $form-&gt;setWidgets(array('id' =&gt; new sfWidgetFormInputHidden(),));
  $form-&gt;setValidators(array('id' =&gt; new sfValidatorPropelChoice(array('model' =&gt; 'Po', 'column' =&gt; 'id', 'required' =&gt; false)),));
  $widgetSchema = $form-&gt;getWidgetSchema();
  $widgetSchema-&gt;setNameFormat('po[%s]');

  for($i=0;$i&lt;3;$i++){
    $ip = new ItemPo();
    if($po) $ip-&gt;setPoId($po);
    $form-&gt;embedForm('item_pos'.++$index, new ItemPoForm($ip));
    $widgetSchema-&gt;setLabel('item_pos'.$index,"Item $index");
  }

  $label = "Item $index".jq_link_to_remote(image_tag('/sf/sf_admin/images/add'), array(
    'url'     =&gt;  'po/addItems?po='.$po.'&amp;index='.$index,
    'update'  =&gt;  'sf_fieldset_none',
    'position'=&gt;  'bottom',
  ));
  $widgetSchema-&gt;setLabel('item_pos'.$index,$label);

  sfContext::getInstance()-&gt;getUser()-&gt;setAttribute('N1added'.$po, $index);
  $this-&gt;form = $form;
  return $this-&gt;renderPartial('po/items');
 }</pre>
<p>The po/items partial is just a snippet from the auto-generated _form.php-</p>
<pre>&lt;?php foreach($configuration-&gt;getFormFields($form, 'new') as $fields): ?&gt;
 &lt;?php foreach ($fields as $name =&gt; $field): ?&gt;
 &lt;?php if ((isset($form[$name]) &amp;&amp; $form[$name]-&gt;isHidden()) || (!isset($form[$name]) &amp;&amp; $field-&gt;isReal())) continue ?&gt;
 &lt;?php include_partial('po/form_field', array(
  'name'       =&gt; $name,
  'attributes' =&gt; $field-&gt;getConfig('attributes', array()),
  'label'      =&gt; $field-&gt;getConfig('label'),
  'help'       =&gt; $field-&gt;getConfig('help'),
  'form'       =&gt; $form,
  'field'      =&gt; $field,
  'class'      =&gt; 'sf_admin_form_row sf_admin_'.strtolower($field-&gt;getType()).' sf_admin_form_field_'.$name,
 )) ?&gt;
 &lt;?php endforeach; ?&gt;
&lt;?php endforeach; ?&gt;</pre>
<p>Finally, we modify our form&#8217;s bind method to remove unused embedded forms, and link the rest to our main object-</p>
<pre>// lib/forms/PoForm.class.php
  public function bind(array $taintedValues = null, array $taintedFiles = null)
  {
    for($i=1;$i&lt;=sfContext::getInstance()-&gt;getUser()-&gt;getAttribute('N1added'.$this-&gt;getObject()-&gt;getId(),3);$i++)
    {
      if(!isset($taintedValues["item_pos$i"]) || empty($taintedValues["item_pos$i"]['item_id']))
      {
        $this-&gt;embeddedForms['item_pos'.$i]-&gt;getObject()-&gt;setDeleted(true);
        unset($this-&gt;embeddedForms["item_pos$i"],$this-&gt;validatorSchema["item_pos$i"]);
        unset($taintedValues['item_pos'.$i]);
      } else {
        $this-&gt;embeddedForms['item_pos'.$i]-&gt;getObject()-&gt;setPo($this-&gt;getObject());
      }

    }
    return parent::bind($taintedValues,$taintedFiles);
  }</pre>
<p>That should do it!<br />
(In case you&#8217;re having trouble seeing the code, you can go <a href="http://www.box.net/shared/2s7cp2el7n" target="_blank">here</a> to see it all)</p>
<div id="attachment_54" class="wp-caption alignnone" style="width: 460px"><img class="size-full wp-image-54" title="embedded forms image" src="http://israelwebdev.files.wordpress.com/2009/05/clipboard01.gif?w=450&#038;h=251" alt="symfony embedded forms ajax" width="450" height="251" /><p class="wp-caption-text">symfony embedded forms ajax</p></div>
<div id="attachment_55" class="wp-caption alignnone" style="width: 460px"><img class="size-full wp-image-55" title="edit form example" src="http://israelwebdev.files.wordpress.com/2009/05/clipboard02.gif?w=450&#038;h=319" alt="edit form example" width="450" height="319" /><p class="wp-caption-text">edit form example</p></div>
<br />Posted in AJAX, jQuery, Symfony Tagged: 1.2, AJAX, embedded, forms, Symfony <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=53&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2009/05/04/how-to-embed-ajax-forms-in-symfony-12-admin-generator/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>

		<media:content url="http://israelwebdev.files.wordpress.com/2009/05/clipboard01.gif" medium="image">
			<media:title type="html">embedded forms image</media:title>
		</media:content>

		<media:content url="http://israelwebdev.files.wordpress.com/2009/05/clipboard02.gif" medium="image">
			<media:title type="html">edit form example</media:title>
		</media:content>
	</item>
		<item>
		<title>What do you get from budget ($12) mp3 players?</title>
		<link>http://israelwebdev.wordpress.com/2009/04/11/what-do-you-get-from-budget-12-mp3-players/</link>
		<comments>http://israelwebdev.wordpress.com/2009/04/11/what-do-you-get-from-budget-12-mp3-players/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 23:09:00 +0000</pubDate>
		<dc:creator>israelwebdev</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[budget]]></category>
		<category><![CDATA[mp3 player]]></category>

		<guid isPermaLink="false">http://israelwebdev.wordpress.com/?p=51</guid>
		<description><![CDATA[Pretty much what you pay for&#8230; For several years now, I&#8217;ve been using my Tungsten Palm for listening to MP3s. I liked being able to test out a few software players, and find one that matched the features I was looking for (I used a combination of pTunes and TCPMP - I especially liked how [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=51&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pretty much what you pay for&#8230;</p>
<p>For several years now, I&#8217;ve been using my Tungsten Palm for listening to MP3s. I liked being able to test out a few software players, and find one that matched the features I was looking for (I used a combination of <a href="http://www.pocket-tunes.com/">pTunes </a>and <a href="http://picard.exceed.hu/tcpmp/test/">TCPMP </a>- I especially liked how each would hold my place, so I could pick up where I left off on more than one audio playlist).</p>
<p>Problem was, I went through several Palm devices, mostly because the audio jack was not cut out for extended use, and I&#8217;m no good at soldering. The most recent time I lost my MP3 capabilities, I turned for the cheapest solution I could find. I looked online, and found the <a href="http://www.portable.co.il/product.asp?productid=86">least expensive 2GB player</a> I could find in Israel (it&#8217;s actually gone up in price since I bought it). At about $12, at least I got an inexpensive 2GB stick, and if the MP3 part works too, well I&#8217;m good to go.</p>
<p>Here&#8217;s my rundown:</p>
<ol>
<li>Size<br />
At a little bit larger than my top thumb knuckle, this little sucker is a breeze to carry around without thinking (the ear-buds are the inconvenient part of this mini wonder). Since I&#8217;m used to my bulky Palm which I now leave at home most of the time, I&#8217;d say I&#8217;m ahead here. And with a street name (there&#8217;s no branding on the device whatsoever, but I did some research and found some similar looking things online) the Clip, it often stays snugly hanging off my front pocket.</li>
<li>Storage<br />
It&#8217;s got the same space as the SD Card in my Palm. But not all memory is created equal. The player connects to my computer via USB, no problem, but the write speed is atrocious. I think it slows down my computer in general when it&#8217;s connected, but certainly any disc access suffers. Deleting and copying data takes at least 10X the equivalent SD transfers using my built-in card reader.</li>
<li>Power<br />
I use both outlet and USB charging for both devices, but the Clip won&#8217;t let me listen while it&#8217;s plugged in. Charging goes quite quickly (15-30 minutes for a full charge), but only lasts about 2.5 hours. That means when I&#8217;m listening to my 4 hour <a href="http://www.foundrymusic.com/">radio shows</a>, I get more than halfway, then I have to stop, charge, and go again.</li>
<li>Interface<br />
I already told you about the software on the Palm &#8211; the Clip has no screen, and what looks like a wheel, but is actually just 5 buttons for play/pause, volume up, down, forward, and back. And since advancing forward is so common, such as when I want to skip to a track I like (click, click, click) or fast-forward (click and hold tight), that forward button is almost dead. The most frustrating part is when dealing with that forward button &#8211; if I accidentally double-click when in the middle of fast forwarding, I skip to the next track, and need to click once to go back, and hold it down all over again. And the fast forwarding is maybe 2X, so you can forget about scrolling to the end of a 4 hour show. I have to <a href="http://mp3splt.sourceforge.net/mp3splt_page/home.php">pre-slice</a> these recordings every 10 minutes, just in case I lose my place.</li>
</ol>
<p>After a few weeks, I feel that I already got what I paid for. Maybe I&#8217;ll splurge soon on the $25 devices with a screen and see how it goes.</p>
<br />Posted in Hardware Tagged: budget, mp3 player <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/israelwebdev.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/israelwebdev.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/israelwebdev.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=israelwebdev.wordpress.com&amp;blog=6466963&amp;post=51&amp;subd=israelwebdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://israelwebdev.wordpress.com/2009/04/11/what-do-you-get-from-budget-12-mp3-players/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/629016da336bf1f3d023751edb384c86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">israelwebdev</media:title>
		</media:content>
	</item>
	</channel>
</rss>
