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

<channel>
	<title>KharySharpe.com</title>
	<atom:link href="http://www.kharysharpe.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kharysharpe.com</link>
	<description>Keeping IT Simple</description>
	<lastBuildDate>Thu, 01 Sep 2011 16:08:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Email the Forgotten King</title>
		<link>http://www.kharysharpe.com/2011/08/email-the-forgotten-king/</link>
		<comments>http://www.kharysharpe.com/2011/08/email-the-forgotten-king/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 10:01:21 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=118</guid>
		<description><![CDATA[The trend these days is to have a facebook page or a twitter account that people can like or follow you, which by any reasonable measure is a good thing, or so it seems on the surface. But it had me thinking about a few questions&#8230; Who really owns your  fans, followers, or potential customers? [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>The trend these days is to have a facebook page or a twitter account that people can like or follow you, which by any reasonable measure is a good thing, or so it seems on the surface.</p>
<p>But it had me thinking about a few questions&#8230;</p>
<p>Who really owns your  fans, followers, or potential customers?</p>
<p>What if the network is down/offline or is shutdown permanently, could you still contact them?</p>
<p>What if the network kicks you off,  blocks you or decides they are taking over your page/account is there much you could do to stop them?</p>
<p>Believe it or not the social networks are in control of your fans, followers, and potential customers.</p>
<p>Don&#8217;t believe me?  Try to export your fans or followers so you can contact them directly&#8230;didn&#8217;t find the export button did you? Do you even know how to contact them directly or who they really are?</p>
<p>The truth is the ease of social media allows us to tweet or post effortlessly which has lead to us forgetting about how we used to communicate in the past.</p>
<p>Email was once and still is the King.  It is the only way you can truly own and communicate directly with your fans, followers, and potential customers.</p>
<p>The solution is therefore simple, no matter what social network you are using, always try (with their permission) to get your fans, followers, and potential customers contact details.</p>
<p>Information like:</p>
<ul>
<li>Correct full name (recommended),</li>
<li>Email address (minimum),</li>
<li>Telephone (preferably mobile so you have an option to send a text instead)</li>
<li>Location, gender and age (perhaps range) are useful information to keep as well.</li>
</ul>
<p>You do have your fan&#8217;s/follower&#8217;s/potential customer&#8217;s email address right or does facebook/twitter have that too?</p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Business-Model-Generation-Visionaries-Challengers/dp/0470876417?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0470876417' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51jX9F1kXXL._SL75_.jpg' class='amazonpress-product-image' alt='Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers' title='Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers' /><span class='amazonpress-product-title'>Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers</span></a>
</div><div class='product'><a href='http://www.amazon.com/Likeable-Social-Media-Customers-Irresistible/dp/0071762345?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0071762345' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41pp4Esl4KL._SL75_.jpg' class='amazonpress-product-image' alt='Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)' title='Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)' /><span class='amazonpress-product-title'>Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)</span></a>
</div><div class='product'><a href='http://www.amazon.com/Likeable-Social-Media-Customers-Irresistible/dp/0071762345?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0071762345' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41pp4Esl4KL._SL75_.jpg' class='amazonpress-product-image' alt='Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)' title='Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)' /><span class='amazonpress-product-title'>Likeable Social Media: How to Delight Your Customers, Create an Irresistible Brand, and Be Generally Amazing on Facebook (And Other Social Networks)</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2011/08/email-the-forgotten-king/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Automatically starting XAMPP on MAC OSX boot up</title>
		<link>http://www.kharysharpe.com/2011/04/automatically-starting-xampp-on-mac-osx-boot-up/</link>
		<comments>http://www.kharysharpe.com/2011/04/automatically-starting-xampp-on-mac-osx-boot-up/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 01:00:19 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=168</guid>
		<description><![CDATA[Using Terminal $ cd /Library/StartupItems $ sudo mkdir xampp $ cd xampp/ $ sudo nano xampp Enter the contents below: #!/bin/sh /Applications/XAMPP/xamppfiles/xampp start If you installed XAMPP elsewhere you will need to modify the path above. You can also start specific xampp apps for example, starting apache only by using /Applications/XAMPP/xamppfiles/xampp startapache instead. &#160; $ sudo [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>Using Terminal</p>
<p><strong>$ </strong>cd /Library/StartupItems</p>
<p><strong>$ </strong>sudo mkdir xampp</p>
<p><strong>$</strong> cd xampp/</p>
<p><strong>$</strong> sudo nano xampp</p>
<p>Enter the contents below:</p>
<pre class="brush: bash; ">

#!/bin/sh

/Applications/XAMPP/xamppfiles/xampp start
</pre>
<p><em>If you installed XAMPP elsewhere you will need to modify the path above.</em></p>
<p><em>You can also start specific xampp apps for example, starting apache only by using /Applications/XAMPP/xamppfiles/xampp startapache instead.</em></p>
<p>&nbsp;</p>
<p><strong>$</strong> sudo nano  StartupParameters.plist</p>
<p>Enter the contents below:</p>
<pre class="brush: xml; ">

&lt;?xml version=”1.0″ encoding=”UTF-8″?&gt;

&lt;!DOCTYPE plist SYSTEM “file://localhost/System/Library/DTDs/PropertyList.dtd”&gt;

&lt;plist version=”0.9″&gt;

&lt;dict&gt;

&lt;key&gt;Description&lt;/key&gt;

&lt;string&gt;XAMPP&lt;/string&gt;

&lt;key&gt;OrderPreference&lt;/key&gt;

&lt;string&gt;Late&lt;/string&gt;

&lt;key&gt;Provides&lt;/key&gt;

&lt;array&gt;

&lt;string&gt;Starts Apache and MySQL&lt;/string&gt;

&lt;/array&gt;

&lt;key&gt;Uses&lt;/key&gt;

&lt;array&gt;

&lt;string&gt;SystemLog&lt;/string&gt;

&lt;/array&gt;

&lt;/dict&gt;

&lt;/plist&gt;
</pre>
<p><strong>$</strong> cd ..</p>
<p><strong>$</strong> sudo chown -R root xampp</p>
<p><strong>$</strong> sudo chgrp -R wheel xampp</p>
<p><strong>$</strong> sudo chmod 755 xampp/xampp</p>
<p>&nbsp;</p>
<p>That&#8217;s it!</p>
<p>All you now have to do is to restart your MAC and xampp will start automatically on boot.</p>
<p>&nbsp;</p>
<p>Original Solution was by Sreeprakash N which can be found here (http://sree.cc/mac-os-x/how-start-xampp-at-startup-on-mac-os-x) , however it&#8217;s not easy to follow as a few commands have been jumbled together, hence this post to make it easier for others to follow.</p>
<p>&nbsp;</p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Learning-PHP-MySQL-JavaScript-Step-By-Step/dp/0596157134?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596157134' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51ptsCLwbqL._SL75_.jpg' class='amazonpress-product-image' alt='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' title='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' /><span class='amazonpress-product-title'>Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)</span></a>
</div><div class='product'><a href='http://www.amazon.com/21-Memory-Improvement-Tips-ebook/dp/B007MPC33S?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B007MPC33S' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41v00nr4PSL._SL75_.jpg' class='amazonpress-product-image' alt='21 Memory Improvement Tips - Lose The Post It Notes and Get Your Memory Back' title='21 Memory Improvement Tips - Lose The Post It Notes and Get Your Memory Back' /><span class='amazonpress-product-title'>21 Memory Improvement Tips - Lose The Post It Notes and Get Your Memory Back</span></a>
</div><div class='product'><a href='http://www.amazon.com/Ballerina-Story-Rhyming-Childrens-ebook/dp/B007M5U0KQ?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B007M5U0KQ' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41y4B4WyKGL._SL75_.jpg' class='amazonpress-product-image' alt='Tip of the Toes (A Ballerina Story) (Fun Rhyming Children&#039;s Books)' title='Tip of the Toes (A Ballerina Story) (Fun Rhyming Children&#039;s Books)' /><span class='amazonpress-product-title'>Tip of the Toes (A Ballerina Story) (Fun Rhyming Children's Books)</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2011/04/automatically-starting-xampp-on-mac-osx-boot-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digicel Buys Out Claro Jamaica &#8211; What does it mean?</title>
		<link>http://www.kharysharpe.com/2011/03/digicel-buys-out-claro-jamaica-what-does-it-mean/</link>
		<comments>http://www.kharysharpe.com/2011/03/digicel-buys-out-claro-jamaica-what-does-it-mean/#comments</comments>
		<pubDate>Fri, 11 Mar 2011 22:41:21 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=158</guid>
		<description><![CDATA[In an unexcpected move, that has caught everyone off guard and by MEGA surprise, Digicel acquires Claro Jamaica. What could this buyout/merger mean, as it stands now it raises more questions than answers for ICT industry.  What do we stand to gain or loose. &#160; Will iPhone become available to the masses, is this the beginning of the end [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>In an unexcpected move, that has caught everyone off guard and by MEGA surprise, Digicel acquires Claro Jamaica.</p>
<p>What could this buyout/merger mean, as it stands now it raises more questions than answers for ICT industry.  What do we stand to gain or loose.</p>
<p>&nbsp;</p>
<p>Will iPhone become available to the masses, is this the beginning of the end of Blackberry Country?</p>
<p>Will iPad 1 and iPad 2 become the new laptop?</p>
<p>Will Edge be upgraded to the 3G, and will Digicel expand the 3G network or move it to LTE (Mobile 4G)?</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>What do you think is going to happen after this merger is completed?</p>
<p>&nbsp;</p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Business-Model-Generation-Visionaries-Challengers/dp/0470876417?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0470876417' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51jX9F1kXXL._SL75_.jpg' class='amazonpress-product-image' alt='Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers' title='Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers' /><span class='amazonpress-product-title'>Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers</span></a>
</div><div class='product'><a href='http://www.amazon.com/Start-Your-Business-Fifth-Edition/dp/1599183870?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1599183870' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41IIyut6nlL._SL75_.jpg' class='amazonpress-product-image' alt='Start Your Own Business, Fifth Edition: The Only Start-Up Book You&#039;ll Ever Need' title='Start Your Own Business, Fifth Edition: The Only Start-Up Book You&#039;ll Ever Need' /><span class='amazonpress-product-title'>Start Your Own Business, Fifth Edition: The Only Start-Up Book You'll Ever Need</span></a>
</div><div class='product'><a href='http://www.amazon.com/The-Personal-MBA-Master-Business/dp/1591843529?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1591843529' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41%2BSdl2La8L._SL75_.jpg' class='amazonpress-product-image' alt='The Personal MBA: Master the Art of Business' title='The Personal MBA: Master the Art of Business' /><span class='amazonpress-product-title'>The Personal MBA: Master the Art of Business</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2011/03/digicel-buys-out-claro-jamaica-what-does-it-mean/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>QuickNote: Deploying Required Zend Framework Components Only</title>
		<link>http://www.kharysharpe.com/2010/12/quicknote-deploying-required-zend-framework-components-only/</link>
		<comments>http://www.kharysharpe.com/2010/12/quicknote-deploying-required-zend-framework-components-only/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 13:02:36 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[quicknote]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=110</guid>
		<description><![CDATA[Read an interesting way to detect and determine what zend framework components your application uses. Feels brute force, but it gets the job done. Article: Deploy the bare minimum required Zend Framework scripts in your application library Link: http://ingol.nl/blog/2010/12/02/deploy-the-bare-minimum-required-zend-framework-scripts-in-your-application-library/ Related Reading: Measuring Performance : Using the new metrics to deploy strategy and improve performance Easy [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>Read an interesting way to detect and determine what zend framework components your application uses.</p>
<p>Feels brute force, but it gets the job done.</p>
<p>Article:</p>
<p>Deploy the bare minimum required Zend Framework scripts in your application library</p>
<p>Link:</p>
<p><a href="http://ingol.nl/blog/2010/12/02/deploy-the-bare-minimum-required-zend-framework-scripts-in-your-application-library/" target="_blank">http://ingol.nl/blog/2010/12/02/deploy-the-bare-minimum-required-zend-framework-scripts-in-your-application-library/</a></p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Measuring-Performance-metrics-strategy-performance/dp/0970247117?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0970247117' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51P6VYR13ML._SL75_.gif' class='amazonpress-product-image' alt='Measuring Performance : Using the new metrics to deploy strategy and improve performance' title='Measuring Performance : Using the new metrics to deploy strategy and improve performance' /><span class='amazonpress-product-title'>Measuring Performance : Using the new metrics to deploy strategy and improve performance</span></a>
</div><div class='product'><a href='http://www.amazon.com/Easy-Websites-Zend-Framework-ebook/dp/B004RVNL3G?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B004RVNL3G' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51eaPn8KqrL._SL75_.jpg' class='amazonpress-product-image' alt='Easy PHP Websites with the Zend Framework' title='Easy PHP Websites with the Zend Framework' /><span class='amazonpress-product-title'>Easy PHP Websites with the Zend Framework</span></a>
</div><div class='product'><a href='http://www.amazon.com/Pragmatic-Project-Automation-Deploy-Monitor/dp/0974514039?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0974514039' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41HZXqIsYxL._SL75_.jpg' class='amazonpress-product-image' alt='Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps' title='Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps' /><span class='amazonpress-product-title'>Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2010/12/quicknote-deploying-required-zend-framework-components-only/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Patents a RISK to the Jamaican and Caribbean ICT industry</title>
		<link>http://www.kharysharpe.com/2010/09/software-patents-a-risk-to-the-jamaican-and-caribbean-ict-industry/</link>
		<comments>http://www.kharysharpe.com/2010/09/software-patents-a-risk-to-the-jamaican-and-caribbean-ict-industry/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 01:29:10 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[patent]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=104</guid>
		<description><![CDATA[(Reposted from SiliconCaribe) If you haven’t been paying attention billionaire Paul Allen (co-founder of Microsoft) is suing Apple, Google, Facebook, AOL, eBay, Netflix, Yahoo!, Staples, OfficeMax, Office Depot, and YouTube over patent infringements. &#8220;A patent is a set of exclusive rights granted by a state (national government) to an inventor or their assignee for a [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.siliconcaribe.com/wp-content/uploads/2010/08/dontstoptheprogress.jpg"><img class="alignleft size-full wp-image-3328" style="padding: 10px;" src="http://www.siliconcaribe.com/wp-content/uploads/2010/08/dontstoptheprogress.jpg" alt="" width="229" height="170" /></a>(Reposted from SiliconCaribe) If you haven’t been paying attention billionaire Paul Allen (co-founder of Microsoft) is suing Apple, Google, Facebook, AOL, eBay, Netflix, Yahoo!, Staples, OfficeMax, Office Depot, and YouTube over patent infringements. &#8220;A patent is a set of exclusive rights granted by a state (national government) to an inventor or their assignee for a limited period of time in exchange for a public disclosure of an invention.&#8221;, Wikipedia.</p>
<p>It is perhaps one of the biggest patent lawsuits to date, and it is one of many patent lawsuits filed since the start of the year.  Paul Allen company Interval Licensing has hundreds of patents and has chosen four (4) out of its arsenal to use in the suit. One of the patents mentioned in the suit is the analyzing of a user&#8217;s behaviour/action (e.g. search) to suggest a list of related content.  Doesn’t this sound like a lot of websites you use? <span id="more-104"></span></p>
<p>This post is not about Paul Allen taking on the web, but rather to stir your thoughts on the subject and bring to light an issue you never thought of before.</p>
<p><strong>So what does it really mean for Jamaica/Caribbean ICT?</strong></p>
<p>Simply put, it means that once you produce software you could be at risk, things that seem simple, obvious, or ubiquitous could land you into huge trouble.</p>
<p>To get a better idea of the potential impact, lets look at the a few patents, and answer if your software implemented any of these?</p>
<ul>
<li> Displayed a popup a window.</li>
<li> Displayed a progress bar to show how much is left in a process.</li>
<li> Resized an image on the fly to present it to a user.</li>
<li> Expanded LOL in a message into laughing out loud and displayed it to a user.</li>
<li> Sent an email with a compressed attachment (zip files).</li>
</ul>
<p>Did you answer yes to one or more? Then you could be at risk of being sued!</p>
<p>To put it into more of an everyday practical context, if you run an eCommerce site you are probably in violation of around twenty (20) patents.  Check out FFI’s Webshop example &#8211; http://webshop.ffii.org/</p>
<p>I may have oversimplified the description of the patents above, however it is to make it easier to understand and to highlight how things we developers take for granted could be putting our business at risk.</p>
<p>Does this mean I should not develop software? Short answer no, you need to be aware of the risks involved and mitigate against them as best as possible.</p>
<p>Better yet stand up and say NO to Software Patents!</p>
<p>Khary Sharpe</p>
<p><strong>Related / Reference Links:</strong></p>
<p>Example of Software Patents<a href="http://eupat.ffii.org/patents/samples/index.en.html"></p>
<p>http://eupat.ffii.org/patents/samples/index.en.html</a></p>
<p>Controversial Patents<a href="http://oreilly.com/pub/q/patent_list"></p>
<p>http://oreilly.com/pub/q/patent_list</a></p>
<p>Paul Allen Patent Suit<a href="http://www.scribd.com/doc/36521443/Gov-uscourts-wawd-169992-1-0"><br />
</a><a href="http://www.xconomy.com/san-francisco/2010/08/30/puzzling-out-paul-allens-patent-suit-against-silicon-valleys-giants/">http://www.xconomy.com/san-francisco/2010/08/30/puzzling-out-paul-allens-patent-suit-against-silicon-valleys-giants/</a></p>
<p>Oracle Sues Google over Android and Java<a href="http://news.cnet.com/8301-30684_3-20013546-265.html"></p>
<p>http://news.cnet.com/8301-30684_3-20013546-265.html</a></p>
<p>Kodak files patent suit against Apple and RIM<a href="http://www.engadget.com/2010/01/14/kodak-files-patent-lawsuits-against-apple-and-rim/"></p>
<p>http://www.engadget.com/2010/01/14/kodak-files-patent-lawsuits-against-apple-and-rim/</a></p>
<p>USPTO Awards LOL Patent to IBM<a href="http://idle.slashdot.org/story/09/12/30/166220/USPTO-Awards-LOL-Patent-To-IBM"><br />
http://idle.slashdot.org/story/09/12/30/166220/USPTO-Awards-LOL-Patent-To-IBM</a><a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PALL&amp;p=1&amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;r=1&amp;f=G&amp;l=50&amp;s1=7,640,233.PN.&amp;OS=PN/7,640,233&amp;RS=PN/7,640,233"></p>
<p>http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&#038;Sect2=HITOFF&#038;d=PALL&#038;p=1&#038;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&#038;r=1&#038;f=G&#038;l=50&#038;s1=7,640,233.PN.&#038;OS=PN/7,640,233&#038;RS=PN/7,640,233</a></p>
<p>Photo by <a href="http://www.flickr.com/photos/hansoete/4967222/">Han Soete</a></p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0735619670' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51nWkLCu1SL._SL75_.jpg' class='amazonpress-product-image' alt='Code Complete: A Practical Handbook of Software Construction, Second Edition' title='Code Complete: A Practical Handbook of Software Construction, Second Edition' /><span class='amazonpress-product-title'>Code Complete: A Practical Handbook of Software Construction, Second Edition</span></a>
</div><div class='product'><a href='http://www.amazon.com/Google-Tests-Software-James-Whittaker/dp/0321803027?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0321803027' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41ACyGtkWFL._SL75_.jpg' class='amazonpress-product-image' alt='How Google Tests Software' title='How Google Tests Software' /><span class='amazonpress-product-title'>How Google Tests Software</span></a>
</div><div class='product'><a href='http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0132350882' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41znMZniZ1L._SL75_.jpg' class='amazonpress-product-image' alt='Clean Code: A Handbook of Agile Software Craftsmanship' title='Clean Code: A Handbook of Agile Software Craftsmanship' /><span class='amazonpress-product-title'>Clean Code: A Handbook of Agile Software Craftsmanship</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2010/09/software-patents-a-risk-to-the-jamaican-and-caribbean-ict-industry/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cut Your Zend Framework Application Upload Time by a Gazillion</title>
		<link>http://www.kharysharpe.com/2010/04/cut-your-zend-framework-application-upload-time-by-a-gazillionth/</link>
		<comments>http://www.kharysharpe.com/2010/04/cut-your-zend-framework-application-upload-time-by-a-gazillionth/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 05:37:06 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=76</guid>
		<description><![CDATA[Uploading applications built with Zend Framework (or any other Feature Rich Framework) via FTP/SFTP is just boring and takes too long. Not to mention the size of your own application and additional third party files that you may need to upload to your server. One solution is to roll your own package that only includes [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>Uploading applications built with Zend Framework (or any other Feature Rich Framework) via FTP/SFTP is just boring and takes too long.  Not to mention the size of your own application and additional third party files that you may need to upload to your server.</p>
<p>One solution is to roll your own package that only includes the necessary components, another is to zip, upload and unzip.</p>
<p>For the time being I decided to choose the latter.</p>
<p>With just a quick review of the zip extension on php.net/zip, I found in the documentation a possible solution.</p>
<p>I added my two cents and ended up with this</p>
<pre class="brush: php; ">

&lt;?php

$file = basename($_GET[&#039;file&#039;]);

$extractTo = realpath(dirname(__FILE__)) . &#039;/&#039; . time() . &#039;/&#039; ;

echo &quot;Extracting $file to $extractTo&quot;;

$zip = new ZipArchive;

if ($zip-&gt;open($file) === TRUE) {
    $zip-&gt;extractTo($extractTo);
    $zip-&gt;close();
    echo &#039; - done&#039;;
} else {
    echo &#039; - failed&#039;;
}
?&gt;
</pre>
<p>You then do a simple http://www.example.com/unpack.php?file=myapp.zip and your files are extracted in no time.</p>
<p>As you can see nothing fancy.  </p>
<p>It creates a new folder within the same location you placed the script .  The folder is named after the current timestamp to avoid overwrites.</p>
<p>As per usual, do the necessaries to protect this script.</p>
<p>How do you cut your upload time?</p>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/CompTIA-Security-Certified-Ahead-SY0-301/dp/1463762364?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1463762364' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51fgwYUOazL._SL75_.jpg' class='amazonpress-product-image' alt='CompTIA Security+: Get Certified Get Ahead: SY0-301 Study Guide' title='CompTIA Security+: Get Certified Get Ahead: SY0-301 Study Guide' /><span class='amazonpress-product-title'>CompTIA Security+: Get Certified Get Ahead: SY0-301 Study Guide</span></a>
</div><div class='product'><a href='http://www.amazon.com/Learning-PHP-MySQL-JavaScript-Step-By-Step/dp/0596157134?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596157134' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51ptsCLwbqL._SL75_.jpg' class='amazonpress-product-image' alt='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' title='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' /><span class='amazonpress-product-title'>Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)</span></a>
</div><div class='product'><a href='http://www.amazon.com/Head-First-MySQL-Lynn-Beighley/dp/0596006306?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596006306' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51e2wFzmiZL._SL75_.jpg' class='amazonpress-product-image' alt='Head First PHP &amp; MySQL' title='Head First PHP &amp; MySQL' /><span class='amazonpress-product-title'>Head First PHP & MySQL</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2010/04/cut-your-zend-framework-application-upload-time-by-a-gazillionth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prevent Access to LAN</title>
		<link>http://www.kharysharpe.com/2010/03/prevent-access-to-lan/</link>
		<comments>http://www.kharysharpe.com/2010/03/prevent-access-to-lan/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 18:25:30 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[lan]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wan]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=65</guid>
		<description><![CDATA[In writing an app that communicates notifications via HTTP requests, to a user specified URL, it brought up an interesting security question. How do you block them from requesting a URL that accesses the LAN ?. The function below was created to do just that. function isOnLAN($url) { $urlParts = parse_url($url); $domainName = $urlParts[‘host’]; $ip [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>In writing an app that communicates notifications via HTTP requests, to a user specified URL, it brought up an interesting security question. How do you block them from requesting a URL that accesses the LAN ?.</p>
<p>The function below was created to do just that.</p>
<pre class="brush: php; ">

function isOnLAN($url)
{

$urlParts = parse_url($url);

$domainName = $urlParts[‘host’];

$ip = gethostbyname($domainName);

if (ip_in_network($ip,&quot;172.16.0.0&quot;, 12))
return true;

if (ip_in_network($ip,&quot;192.168.0.0&quot;, 16))
return true;

if (ip_in_network($ip,&quot;10.0.0.0&quot;, 8))
return true; //true

return false;

}

// Taken from php.net - http://jm2.php.net/manual/en/function.ip2long.php#92544
function ip_in_network($ip, $net_addr, $net_mask){
if($net_mask &lt;= 0){ return false; }
$ip_binary_string = sprintf(&quot;%032b&quot;,ip2long($ip));
$net_binary_string = sprintf(&quot;%032b&quot;,ip2long($net_addr));
return (substr_compare($ip_binary_string,$net_binary_string,0,$net_mask) === 0);
}
</pre>
<p>Usage:</p>
<pre class="brush: php; ">

if (isOnLAN(&quot;http://192.168.1.1&quot;))
  echo &quot;Address on LAN&quot;;
else
  echo &quot;Address on INTERNET&quot;;
</pre>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Learning-PHP-MySQL-JavaScript-Step-By-Step/dp/0596157134?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596157134' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51ptsCLwbqL._SL75_.jpg' class='amazonpress-product-image' alt='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' title='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' /><span class='amazonpress-product-title'>Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)</span></a>
</div><div class='product'><a href='http://www.amazon.com/The-Web-Application-Hackers-Handbook/dp/1118026470?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1118026470' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51mzEbU-nBL._SL75_.jpg' class='amazonpress-product-image' alt='The Web Application Hacker&#039;s Handbook: Finding and Exploiting Security Flaws' title='The Web Application Hacker&#039;s Handbook: Finding and Exploiting Security Flaws' /><span class='amazonpress-product-title'>The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws</span></a>
</div><div class='product'><a href='http://www.amazon.com/Firewall-Kurt-Wallander-Mysteries-No/dp/1400031532?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1400031532' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/41A08qadDML._SL75_.jpg' class='amazonpress-product-image' alt='Firewall (Kurt Wallander Mysteries, No. 8)' title='Firewall (Kurt Wallander Mysteries, No. 8)' /><span class='amazonpress-product-title'>Firewall (Kurt Wallander Mysteries, No. 8)</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2010/03/prevent-access-to-lan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Translated Time Zone Listing for Zend_Form</title>
		<link>http://www.kharysharpe.com/2009/01/translated-time-zone-listing-for-zend_form/</link>
		<comments>http://www.kharysharpe.com/2009/01/translated-time-zone-listing-for-zend_form/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 22:00:45 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[internationalization]]></category>
		<category><![CDATA[l10n]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timezone]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=7</guid>
		<description><![CDATA[Timezones available: timezonetowindows windowstotimezone territorytotimezone timezonetoterritory citytotimezone timezonetocity $form = new Zend_Form(); $timeZoneList = $locale-&#62;getTranslationList(&#34;timezonetoterritory&#34;); $timeZone = $form-&#62;createElement(&#039;select&#039;, &#039;time_zone&#039;, array( &#039;filters&#039;    =&#62; array(&#039;StringTrim&#039;), &#039;label&#039;      =&#62; &#039;Time Zone:&#039;, ))-&#62;addMultiOptions($timeZoneList); $this-&#62;addElement($timeZone); Related Reading: Manhunt: The Ten-Year Search for Bin Laden--from 9/11 to Abbottabad The Time Machine (Dover Thrift Editions) Tell Your Time: How to Manage Your Schedule [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>Timezones available:</p>
<ul>
<li>timezonetowindows</li>
<li>windowstotimezone</li>
<li>territorytotimezone</li>
<li>timezonetoterritory</li>
<li>citytotimezone</li>
<li>timezonetocity</li>
</ul>
<pre class="brush: php; ">

$form = new Zend_Form();

$timeZoneList = $locale-&gt;getTranslationList(&quot;timezonetoterritory&quot;);

$timeZone = $form-&gt;createElement(&#039;select&#039;, &#039;time_zone&#039;, array(

&#039;filters&#039;    =&gt; array(&#039;StringTrim&#039;),
&#039;label&#039;      =&gt; &#039;Time Zone:&#039;,
))-&gt;addMultiOptions($timeZoneList);

$this-&gt;addElement($timeZone);
</pre>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Manhunt-Ten-Year-Search-Laden-Abbottabad/dp/0307955575?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0307955575' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51WudfSMNyL._SL75_.jpg' class='amazonpress-product-image' alt='Manhunt: The Ten-Year Search for Bin Laden--from 9/11 to Abbottabad' title='Manhunt: The Ten-Year Search for Bin Laden--from 9/11 to Abbottabad' /><span class='amazonpress-product-title'>Manhunt: The Ten-Year Search for Bin Laden--from 9/11 to Abbottabad</span></a>
</div><div class='product'><a href='http://www.amazon.com/Time-Machine-Dover-Thrift-Editions/dp/0486284727?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0486284727' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51jCrua4CPL._SL75_.jpg' class='amazonpress-product-image' alt='The Time Machine (Dover Thrift Editions)' title='The Time Machine (Dover Thrift Editions)' /><span class='amazonpress-product-title'>The Time Machine (Dover Thrift Editions)</span></a>
</div><div class='product'><a href='http://www.amazon.com/Tell-Your-Time-Schedule-ebook/dp/B005F0H7BK?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B005F0H7BK' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/411XbLtSwkL._SL75_.jpg' class='amazonpress-product-image' alt='Tell Your Time: How to Manage Your Schedule So You Can Live Free' title='Tell Your Time: How to Manage Your Schedule So You Can Live Free' /><span class='amazonpress-product-title'>Tell Your Time: How to Manage Your Schedule So You Can Live Free</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2009/01/translated-time-zone-listing-for-zend_form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theme your Zend Framework Application</title>
		<link>http://www.kharysharpe.com/2009/01/themeing-your-zend-framework-application/</link>
		<comments>http://www.kharysharpe.com/2009/01/themeing-your-zend-framework-application/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 22:00:18 +0000</pubDate>
		<dc:creator>Khary Sharpe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend_layout]]></category>
		<category><![CDATA[zend_view]]></category>
		<category><![CDATA[zend_view_helper]]></category>

		<guid isPermaLink="false">http://www.kharysharpe.com/?p=3</guid>
		<description><![CDATA[Allowing users to customize the look of your application is always welcomed. Here is one approach using Zend Framework. First lets look at the directory structure for creating a themeable application. Typical Layout: root &#8212; private &#8212; public &#8212;&#8212; css &#8212;&#8212; js &#8212;&#8212; images You&#8217;ll notice that all our publicly available files for stylesheets, javascript [...]
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></description>
			<content:encoded><![CDATA[<p>Allowing users to customize the look of your application is always welcomed. Here is one approach using Zend Framework.</p>
<p>First lets look at the directory structure for creating a themeable application.</p>
<p>Typical Layout:<br />
root</p>
<p>&#8212; private</p>
<p>&#8212; public</p>
<p>&#8212;&#8212; css</p>
<p>&#8212;&#8212; js</p>
<p>&#8212;&#8212; images</p>
<p>You&#8217;ll notice that all our publicly available files for stylesheets, javascript and images are placed in the public folder. We are going to alter this by placing them into a sub-folder under public called &#8216;default&#8217;.</p>
<p>Our structure now looks like this.</p>
<p>root</p>
<p>&#8212; private</p>
<p>&#8212; public</p>
<p>&#8212;&#8212; default</p>
<p>&#8212;&#8212;&#8212; css</p>
<p>&#8212;&#8212;&#8212; js</p>
<p>&#8212;&#8212;&#8212;  images</p>
<p>What this allows us to do is encapsulate all our files/assets into a single folder that we can now easily reference. All our themes and their assets should now follow the same naming convention as our &#8216;default&#8217; folder.</p>
<p>Adding a theme to our structure now looks like this<br />
root</p>
<p>&#8212; private</p>
<p>&#8212; public</p>
<p>&#8212;&#8212; default</p>
<p>&#8212;&#8212;&#8212;  css</p>
<p>&#8212;&#8212;&#8212; js</p>
<p>&#8212;&#8212;&#8212;  images</p>
<p>&#8212;&#8212; <strong>modern</strong></p>
<p>&#8212;&#8212;&#8212;  css</p>
<p>&#8212;&#8212;&#8212; js</p>
<p>&#8212;&#8212;&#8212;   images</p>
<p>In our application bootstrap we add the following line of code (around where you initialize the session)</p>
<pre class="brush: php; ">

$session = Zend_Registry::get(&#039;Zend_Session&#039;); //change this to match how you store your sessions

if (!isset($session-&gt;theme))

$session-&gt;theme = &#039;default&#039;;
</pre>
<p>To easily use this in our application lets create a view helper.</p>
<pre class="brush: php; ">

class My_View_Helper_Theme
{
/**
* Returns site base url based on the current theme
*
*
* @return string
*/
public function theme($content = &#039;&#039;, $prependBase = true)
{

if ($prependBase)
{
$baseUrl =  Zend_Controller_Front::getInstance()-&gt;getRequest()-&gt;getBaseUrl();
}
else
{
$baseUrl = &#039;&#039;;
}

$session = Zend_Registry::get(&#039;Zend_Session&#039;); //change this to match how you store your sessions

$url = $baseUrl . $session-&gt;theme . $content;
}
}
</pre>
<p>In our view we can now use our view helper to fetch the correct file from the current theme.</p>
<pre class="brush: php; ">

&lt;img src=&quot;&lt;?php echo $this-&gt;theme(&#039;/images/blankslate.jpg&#039;) ?&gt;&quot; /&gt;
</pre>
<p>We can make our view helper a little more helpful by adding a fallback to the default if the file doesn&#8217;t exist in the theme.</p>
<pre class="brush: php; ">

class My_View_Helper_Theme
{
/**
* Returns site base url based on the current theme
*
*
* @return string
*/
public function theme($content = &#039;&#039;, $prependBase = true)
{

if ($prependBase)
{
$baseUrl =  Zend_Controller_Front::getInstance()-&gt;getRequest()-&gt;getBaseUrl();
}
else
{
$baseUrl = &#039;&#039;;
}

$session = Zend_Registry::get(&#039;Zend_Session&#039;); //change this to match how you store your sessions

$url =  &#039;/public/&#039; . $session-&gt;theme . $content;

$location = DOCUMENT_ROOT . $url;

if (file_exists($location))
{
return $baseUrl . $url;
}
else
{

// If theme doesn&#039;t exist then use the default theme

$url = &#039;/public/default&#039; . $content;

return $baseUrl . $url;
}
}
</pre>

<div class='amazonpress'><h3>Related Reading:</h3>
<div class='product'><a href='http://www.amazon.com/Learning-PHP-MySQL-JavaScript-Step-By-Step/dp/0596157134?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596157134' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51ptsCLwbqL._SL75_.jpg' class='amazonpress-product-image' alt='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' title='Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)' /><span class='amazonpress-product-title'>Learning PHP, MySQL, and JavaScript: A Step-By-Step Guide to Creating Dynamic Websites (Animal Guide)</span></a>
</div><div class='product'><a href='http://www.amazon.com/Head-First-MySQL-Lynn-Beighley/dp/0596006306?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=kharshar-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0596006306' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51e2wFzmiZL._SL75_.jpg' class='amazonpress-product-image' alt='Head First PHP &amp; MySQL' title='Head First PHP &amp; MySQL' /><span class='amazonpress-product-title'>Head First PHP & MySQL</span></a>
</div><div class='product'><a href='http://www.amazon.com/Psychology-Themes-Variations-Briefer-Version/dp/0495811335?SubscriptionId=AKIAJCZG6ZPBZ72C733Q&tag=546246187-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=0495811335' target='' rel='nofollow'><img src='http://ecx.images-amazon.com/images/I/51YjfhkbfeL._SL75_.jpg' class='amazonpress-product-image' alt='Psychology: Themes and Variations, Briefer Version' title='Psychology: Themes and Variations, Briefer Version' /><span class='amazonpress-product-title'>Psychology: Themes and Variations, Briefer Version</span></a>
</div></div>
<!-- Start WP Socializer - Social Buttons - Output -->
 &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a> &bull; <a href="" title="" target="_blank"></a>
<!-- End WP Socializer - Social Buttons - Output -->
]]></content:encoded>
			<wfw:commentRss>http://www.kharysharpe.com/2009/01/themeing-your-zend-framework-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

