<?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>opensourcetutor.com &#187; Web Development</title>
	<atom:link href="http://www.opensourcetutor.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opensourcetutor.com</link>
	<description>On Linux, Web Development, Joomla and Magento commerce</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:27:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to rsync directory structure but not files</title>
		<link>http://www.opensourcetutor.com/2011/08/14/how-to-rsync-directory-structure-but-not-files/</link>
		<comments>http://www.opensourcetutor.com/2011/08/14/how-to-rsync-directory-structure-but-not-files/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 06:59:34 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[directories]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=309</guid>
		<description><![CDATA[rsync -av --include='*/' --exclude='*' /src/path /destination/path
An example where we use it is when building Magento templates and themes, we copy the directory structure across but not the files so that when we need to, we can copy a file across from the base theme without having to create the directory structure before copying the file:
rsync -av --include='*/' --exclude='*' app/design/frontend/base/default/ app/design/frontend/default/default/
]]></description>
			<content:encoded><![CDATA[<p><code>rsync -av --include='*/' --exclude='*' /src/path /destination/path</code></p>
<p>An example where we use it is when building Magento templates and themes, we copy the directory structure across but not the files so that when we need to, we can copy a file across from the base theme without having to create the directory structure before copying the file:</p>
<p><code>rsync -av --include='*/' --exclude='*' app/design/frontend/base/default/ app/design/frontend/default/default/</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2011/08/14/how-to-rsync-directory-structure-but-not-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash: Bulk Convert M4V to Good Quality FLV using ffmpeg</title>
		<link>http://www.opensourcetutor.com/2011/06/14/bash-bulk-convert-m4v-to-good-quality-flv-using-ffmpeg/</link>
		<comments>http://www.opensourcetutor.com/2011/06/14/bash-bulk-convert-m4v-to-good-quality-flv-using-ffmpeg/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 01:08:41 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=298</guid>
		<description><![CDATA[



High Quality &#8211; File size ends up being larger than the M4V
for i in *.m4v;do ffmpeg -i $i -ar 22050 -qscale .1 ${i%.*}.flv;done
Quality is almost indiscernible from the original M4V in a laptop
for i in *.m4v;do ffmpeg -i $i -ar 22050 -ab 96k -qscale 2 ${i%.*}.flv;done
Slight degradation in quality. File size approx. 35% less than the original m4v.
for i in *.m4v;do ffmpeg -i $i -ar 22050 -ab 96k -qscale 5 ${i%.*}.flv;done
]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>High Quality &#8211; File size ends up being larger than the M4V<br />
<code>for i in *.m4v;do ffmpeg -i $i -ar 22050 -qscale .1 ${i%.*}.flv;done</code><br />
Quality is almost indiscernible from the original M4V in a laptop<br />
<code>for i in *.m4v;do ffmpeg -i $i -ar 22050 -ab 96k -qscale 2 ${i%.*}.flv;done</code><br />
Slight degradation in quality. File size approx. 35% less than the original m4v.<br />
<code>for i in *.m4v;do ffmpeg -i $i -ar 22050 -ab 96k -qscale 5 ${i%.*}.flv;done</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2011/06/14/bash-bulk-convert-m4v-to-good-quality-flv-using-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Git on Cpanel based 64bit Centos servers</title>
		<link>http://www.opensourcetutor.com/2011/02/19/how-to-install-git-on-cpanel-based-64bit-centos-servers/</link>
		<comments>http://www.opensourcetutor.com/2011/02/19/how-to-install-git-on-cpanel-based-64bit-centos-servers/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 04:29:38 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=290</guid>
		<description><![CDATA[Quite easy really, once you know how.
First we add in the Epel repo for 64bit Centos5
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
and then you need to disableexcludes in yum due to Cpanel disabling Perl from yum updates. So to install git now, we run.
yum --disableexcludes=main install git
Simple, really.
]]></description>
			<content:encoded><![CDATA[<p>Quite easy really, once you know how.</p>
<p>First we add in the Epel repo for 64bit Centos5<br />
<code>rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm</code></p>
<p>and then you need to disableexcludes in yum due to Cpanel disabling Perl from yum updates. So to install git now, we run.<br />
<code>yum --disableexcludes=main install git</code></p>
<p>Simple, really.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2011/02/19/how-to-install-git-on-cpanel-based-64bit-centos-servers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using mod_rewrite for moving websites, folder and domain names for SEO retention</title>
		<link>http://www.opensourcetutor.com/2009/12/04/using-mod_rewrite-for-moving-websites-folder-and-domain-names-for-seo-retention/</link>
		<comments>http://www.opensourcetutor.com/2009/12/04/using-mod_rewrite-for-moving-websites-folder-and-domain-names-for-seo-retention/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 05:34:22 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/12/04/using-mod_rewrite-for-moving-websites-folder-and-domain-names-for-seo-retention/</guid>
		<description><![CDATA[



mod_rewrite is a powerful Apache module that gives you the power over the URL&#8217;s displayed to your visitors to your site. 
Much has been written already by many people using both examples and tutorials of the basics. The aim of my addition, as always is primarily for my own notes and secondarily to explain why you want to use mod_rewrite for SEO ranking retention.
Let&#8217;s say you have a website that enjoys well ranked pages and a lot of traffic via google or has a great deal of Backlinks from other ...]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
mod_rewrite is a powerful Apache module that gives you the power over the URL&#8217;s displayed to your visitors to your site. </p>
<p>Much has been written already by many people using both examples and tutorials of the basics. The aim of my addition, as always is primarily for my own notes and secondarily to explain why you want to use mod_rewrite for SEO ranking retention.</p>
<p>Let&#8217;s say you have a website that enjoys well ranked pages and a lot of traffic via google or has a great deal of Backlinks from other blogs or websites to particular pages in your site. One of the powerful aspects of <a target="_blank" href="https://www.google.com/webmasters/tools/">Google Webmaster Tools</a> is that it easily provides you a way to be able to view which URL&#8217;s are linking particular pages on your own website. When contemplating moving a website or rearranging the structure of an existing website, one of your first considerations should be to maintain the availability of accessing your new pages via your old links. Essentially we map your current (old) structure to your new (proposed) structure. </p>
<p>Here&#8217;s our first sample. The old url was http://www.domain.com.au/mstore/2wsub1 and our new URL includes keyword rich content: http://www.domain.com.au/htc-hero-android-brown. We use the following mapping:<br />
<code></code>
<pre>
     RewriteRule ^mstore/2wsub1(.*)$ http://www.domain.com.au/htc-hero-android-brown   [R=301,NC,L]
</pre>
<p><b>The above means:</b> Any content being requested at <i>/mstore/2wsub1</i> or <i>/mstore/2wsub1.html</i> or<i> /mstore/2wsub1.asp</i> etc. will be redirected to <i>http://www.domain.com.au/htc-hero-android-brown</i>. The redirect additionally offers the following further information about the redirect.[R=301,NC,L] tells the requester that it is a permanent redirect (R=301 &#8211; Permanent Redirect) and that the requested URL match is case-insensitive (NC &#8211; no-case) and that if it finds a match, then redirect and do not attempt any further matches [L - Last match]
<p>After migrating a website, I advise to monitor both Google Webmaster Tools and also your server site statistics / logs for 404 Errors, so you can correct any URL&#8217;s you hadn&#8217;t originally mapped.
</p>
<h2>Migrating domain names &amp; ensuring a single accessible URL</h2>
<p>In this scenario, we are moving <i>http://www.olddomain.com.au/</i> to <i>http://www.coolnewdomain.com.au/</i> because your audience are Mac users and like anything with the title &#8220;cool&#8221; in it ;). As an aside, we want to ensure that people are always directed to <i>http://www.coolnewdomain.com.au</i> if they type in <i>http://coolnewdomain.com.au</i> and search engines only index the www version so that you do not have duplicate content listed.<br />
<code></code>
<pre>
        RewriteCond %{HTTP_HOST} !^www\.coolnewdomain\.com\.au$
        RewriteRule (.*)       http://www.coolnewdomain.com.au/$1 [R=301,NC]
</pre>
<p><b>The above means:</b> If you have NOT accessed the website using <i>http://www.coolnewdomain.org.au</i> then redirect you to <i>http://www.coolnewdomain.org.au</i> . The $1 value is the &#8216;first variable&#8217;. What it means is that if you access: <i>http://olddomain.com.au/cool-product</i> will be redirected to <i>http://www.coolnewdomain.com.au/cool-new-product</i>. Everything after the domain name is used as a variable to attach to the end of the new domain name. Even if you have not migrated domain names it is still wise to use this code on your existing site so that search engines only search one &#8216;form&#8217; of your domain name. One last thing to note here, is that we don&#8217;t use the [L] flag, allowing mod_rewrite to continue looking for matches, as there&#8217;s still a chance it could find a match for url&#8217;s like our first example.</p>
<h2>Using mod_rewrite for blocking access to a website as an alternative to Basic Authentication</h2>
<p>Real life usage scenario. Some developers I know created a development website similar to <i>http://dev.coolnewsite.com.au/</i> that was accessible publicly without authentication. They assumed as they hadn&#8217;t advertised it, nobody knew about it but just prior to going live, google &#8216;found&#8217; the site and indexed it. When the real site went live, anytime they were searching in google for the site or for products, the <i>http://dev.coolnewsite.com.au/ </i>was being displayed. They wanted to block access to the dev site but they didn&#8217;t want to lose the fact that they already had some visitors and page rank on the dev site. I tried to use a mod_rewrite rule as above before the Authentication rule but the auth rule takes effect before the rewrite rule,so visitors were being asked to authenticate and not being redirected, additionally this wouldn&#8217;t have told google about the new, actual live site. So here&#8217;s what I did:<br />
<code></code>
<pre>
 RewriteCond %{REMOTE_ADDR} !^213\.206\.175\.212$
 RewriteCond %{REMOTE_ADDR} !^124\.231\.17\.180$
 RewriteCond %{REMOTE_ADDR} !^123\.168\.239\.32$
 RewriteRule ^(.*)$ http://www.coolnewdomain.com.au/$1 [R=301,L]
</pre>
<p>ps: fictitous IP addresses provided ;)<b><br />
The above means:</b> If your IP address is NOT 213.206.175.212 (dev A) or 124.231.17.180 (dev B) or 123.168.239.32 (Customer) then redirect the visitor to http://www.coolnewdomain.com.au/ with a permanent redirect [R=301] and make it the last matching rule [L].</p>
<p>This means search engines will know about the real, live site next time they come to visit, anyone searching for the site finding the dev site will be redirected to the equivalent URL on the live site but the developers and customer can still access the dev site from the three different locations. The obvious downside to the above code is that if you are not using a static IP address, you will need to update the addresses each time your IP changes. We will add authentication as our live site begins to take rankings above the dev site.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/mod_rewrite" rel="tag">mod_rewrite</a>, <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/lamp" rel="tag">lamp</a>, <a class="performancingtags" href="http://technorati.com/tag/web development" rel="tag">web development</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=4057f26c-38f8-8c07-993b-e54351a24005" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/12/04/using-mod_rewrite-for-moving-websites-folder-and-domain-names-for-seo-retention/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An Open Source PDF Editor for Windows, Mac &amp; Linux</title>
		<link>http://www.opensourcetutor.com/2009/10/01/an-open-source-pdf-editor-for-windows-mac-linux/</link>
		<comments>http://www.opensourcetutor.com/2009/10/01/an-open-source-pdf-editor-for-windows-mac-linux/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 05:26:59 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[inkscape]]></category>
		<category><![CDATA[pdf editing]]></category>
		<category><![CDATA[pdf editor]]></category>
		<category><![CDATA[pdfcreator]]></category>
		<category><![CDATA[pdftk]]></category>
		<category><![CDATA[pdftops]]></category>
		<category><![CDATA[ps2pdf]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/10/01/an-open-source-pdf-editor-for-windows-mac-linux/</guid>
		<description><![CDATA[Bla bla bla]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks-->
<p>I have previous written about PDF Editors for Windows and Linux <a href="http://www.opensourcetutor.com/2007/08/20/open-source-pdf-editor-for-linux-and-a-windows-one-but-not-oss/" target="_blank">here</a> and <a href="http://www.opensourcetutor.com/2007/09/01/open-source-pdf-editor-part-2/" target="_blank">here</a>, so this is, in effect Part 3.</p>
<p>I have used <a href="http://extensions.services.openoffice.org/project/pdfimport" target="_blank">OpenOffice PDF Import Extension</a>, <a href="http://pdfedit.petricek.net/en/index.html" target="_blank">PDFEdit</a> and numerous other tools listed in my first posts but nothing works as well as the latest <a href="http://www.inkscape.org" target="_blank">Inkscape</a>. It has one downside though, right now. That is, you can only edit one page at a time.</p>
<p>So here&#8217;s a <a href="http://www.myacrobatpdf.com/743/php-handout.html#" target="_blank">random PDF</a> I found by googling for random PDF ;). Here&#8217;s a shot of the first page in my PDF Viewer (evince).</p>
<p><img src="http://www.opensourcetutor.com/wp-content/uploads/2009/10/inkscape_post11.png" height="459" width="515" /></p>
<p>Now we open Inkscape click File -&gt; Open and you will see the following dialogue box where we can choose which page to import.</p>
<p><img src="http://www.opensourcetutor.com/wp-content/uploads/2009/10/inkscape_post2.png" height="331" width="451" /></p>
<p>Now you can see that the page imported perfectly into Inkscape and objects are editable.</p>
<p><img src="http://www.opensourcetutor.com/wp-content/uploads/2009/10/inkscape_post3.png" height="653" width="571" /></p>
<p>and finally, here&#8217;s our slightly edited, more up-to-date version.</p>
<p><img src="http://www.opensourcetutor.com/wp-content/uploads/2009/10/inkscape_post4.png" height="656" width="572" /></p>
<p>A few other tips.</p>
<p>Inkscape won&#8217;t import encrypted PDF&#8217;s. To get around this you can use pdftops <file_name>.pdf which turns the PDF into a Postscript file. You can then use ps2pdf </file_name><file_name>.ps to return the file back into an unencrypted pdf.</p>
<p>On Linux, you can print to PDF automatically. On Windows, you will want to have installed a PDF Printer, like <a href="http://sourceforge.net/projects/pdfcreator/" target="_blank">PDFCreator</a> and on Mac OSX, <a href="http://www.macosxhints.com/article.php?story=2007082812233971http://www.macosxhints.com/article.php?story=2007082812233971" target="_blank">read this tutorial</a> about setting up a free PDF printer.</p>
<p>If you need to merge multiple PDF&#8217;s into a single PDF, there is a nice tool called <a href="http://www.accesspdf.com/pdftk/" target="_blank">PDFtk</a> that can do that for you which is available for Windows, MacOSX and Linux.</p>
<p><!--adsense#widelinks--></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/open%20source" rel="tag">open source</a>, <a class="performancingtags" href="http://technorati.com/tag/pdf%20editor" rel="tag">pdf editor</a>, <a class="performancingtags" href="http://technorati.com/tag/pdf%20editing" rel="tag">pdf editing</a>, <a class="performancingtags" href="http://technorati.com/tag/inkscape" rel="tag">inkscape</a>, <a class="performancingtags" href="http://technorati.com/tag/pdfcreator" rel="tag">pdfcreator</a>, <a class="performancingtags" href="http://technorati.com/tag/pdftk" rel="tag">pdftk</a>, <a class="performancingtags" href="http://technorati.com/tag/ps2pdf" rel="tag">ps2pdf</a>, <a class="performancingtags" href="http://technorati.com/tag/pdftops" rel="tag">pdftops</a></p>
<p></file_name></p>
</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=05613174-2718-85b5-8322-baebbb327194" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/10/01/an-open-source-pdf-editor-for-windows-mac-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to type a degree symbol in Linux</title>
		<link>http://www.opensourcetutor.com/2009/06/25/how-to-type-a-degree-symbol-in-linux/</link>
		<comments>http://www.opensourcetutor.com/2009/06/25/how-to-type-a-degree-symbol-in-linux/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 01:21:25 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[degree]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[symbols]]></category>
		<category><![CDATA[typography]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=222</guid>
		<description><![CDATA[
Today, I came across a document where I had to type a degree symbol in Linux. Thanks to this post at Arch Linux Forums, it was painless to find out how. So here it is:
In windows, apparently you hold down Alt+0176.
Linux is different and to achieve the same, hold down Ctrl+Shift and type u+00b0, though if you are writing for html, the correct symbol is
&#38;deg;
Alternatively you can copy and paste it from this table on wikipedia, which includes other useful symbols like Pound, Registered and Copyright.
It will actually type the ...]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks--></p>
<p>Today, I came across a document where I had to type a degree symbol in Linux. Thanks to <a target="_blank" href="http://bbs.archlinux.org/viewtopic.php?id=49477">this post</a> at <a target="_blank" href="http://bbs.archlinux.org/">Arch Linux Forums</a>, it was painless to find out how. So here it is:</p>
<p>In windows, apparently you hold down Alt+0176.</p>
<p>Linux is different and to achieve the same, hold down Ctrl+Shift and type u+00b0, though if you are writing for html, the correct symbol is
<pre><code>&amp;deg;</code></pre>
<p>Alternatively you can copy and paste it from <a target="_blank" href="http://en.wikipedia.org/wiki/Latin-1_Supplement_unicode_block">this table on wikipedia</a>, which includes other useful symbols like Pound, Registered and Copyright.</p>
<p>It will actually type the u00b0 until you complete and then it will form the degree symbol like so: °</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/html" rel="tag">html</a>, <a class="performancingtags" href="http://technorati.com/tag/unicode" rel="tag">unicode</a>, <a class="performancingtags" href="http://technorati.com/tag/linux" rel="tag">linux</a>, <a class="performancingtags" href="http://technorati.com/tag/degree" rel="tag">degree</a>, <a class="performancingtags" href="http://technorati.com/tag/symbols" rel="tag">symbols</a>, <a class="performancingtags" href="http://technorati.com/tag/typography" rel="tag">typography</a></p>
<p><font face="sans-serif"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/06/25/how-to-type-a-degree-symbol-in-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pluf &#8211; A PHP5 Port of Django</title>
		<link>http://www.opensourcetutor.com/2009/06/10/pluf-a-php5-port-of-django/</link>
		<comments>http://www.opensourcetutor.com/2009/06/10/pluf-a-php5-port-of-django/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 00:28:15 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Virtualization (Virtualisation)]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Pluf]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/06/10/pluf-a-php5-port-of-django/</guid>
		<description><![CDATA[Pluf is a PHP Framework developed as a port of Django to PHP. It claims to be simple, elegant and easy for people used to Django but in PHP5 so easy to deploy all over the world.
After reading the documentation, the file layout and concepts are all quite similar to django, though a downside is that we lose much of the beauty of the Python language and it doesn&#8217;t seem to have the Admin interface that makes django so delightful to work with.
Here is a sample of a helloworld, which ...]]></description>
			<content:encoded><![CDATA[<p>Pluf is a PHP Framework developed as a port of Django to PHP. It claims to be <i>simple, elegant and easy for people used to Django but in PHP5 so easy to deploy all over the world.</i></p>
<p>After reading the documentation, the file layout and concepts are all quite similar to django, though a downside is that we lose much of the beauty of the Python language and it doesn&#8217;t seem to have the Admin interface that makes django so delightful to work with.</p>
<p>Here is a sample of a helloworld, which would exist in a file called &#8220;Hello/Views.php&#8221;</p>
<pre>
<code>&lt; ?php
class Hello_Views
{
    public function hello($request, $match)
    {
        return new Pluf_HTTP_Response('Hello World!');
    }
}</code>
</code></pre>
<p>as you can see, it is reasonably similar to (though more verbose than) Django&#8217;s equivalent &#8220;/hello/views.py&#8221; which would look like this:</p>
<pre><code>from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello world")</code></pre>
<p>Check out the full <a href="http://www.pluf.org/doc/hello-world.html" target="_blank">helloworld tutorial</a> of <a href="http://www.pluf.org/" target="_blank">Pluf</a></p>
<h2>ORM</h2>
<p>Pluf has an ORM that applies similar concepts and ideas as Django&#8217;s ORM, though as with the helloworld, it is slightly more verbose. The rest of the framework follows the same patterns, urls.php has a more verbose PHP regex patterns than django&#8217;s urls.py</p>
<h2>Caching</h2>
<p>Pluf runs it&#8217;s own caching system as well as being able to utilise <a href="http://php.net/apc" target="_blank">APC</a> and <a href="http://www.danga.com/memcached/" target="_blank">Memcached</a></p>
<h2>Django vs Pluf</h2>
<p>So what exactly does Pluf offer in ways of advantages over Django and why would you choose to use it instead? The obvious reasons are if you are well setup as a PHP developer. You work with tools and ide&#8217;s setup specifically for PHP, you have hosting infrastructure setup for PHP and you work with developers who are well versed in PHP. The other advantage of Pluf is that it comes with a migration framework out of the box, whereas django doesn&#8217;t and you need to use one of the available <a href="http://code.djangoproject.com/wiki/SchemaEvolution" target="_blank">database schema migration</a>, the most promising currently looks like <a href="http://south.aeracode.org/" target="_blank">South</a></p>
<p>Of course, Django deployment is becoming much simpler recently by leveraging the tutorials and tools like <a href="http://pypi.python.org/pypi/virtualenv" target="_blank">virtualenv</a>, <a href="http://pypi.python.org/pypi/pip" target="_blank">pip</a> and most recently <a href="http://www.modrails.com/" target="_blank">modrails</a> has begun supporting python wsgi services. I recently performed some benchmarks with modrails vs fastcgi against a django blogging application called <a href="http://byteflow.su/" target="_blank">byteflow</a> and modrails provided approx 1.8x speedup. More to come on that later.</p>
<p><!--adsense#widelinks--></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/PHP" rel="tag">PHP</a>, <a class="performancingtags" href="http://technorati.com/tag/Pluf" rel="tag">Pluf</a>, <a class="performancingtags" href="http://technorati.com/tag/Django" rel="tag">Django</a>, <a class="performancingtags" href="http://technorati.com/tag/Web Development" rel="tag">Web Development</a>, <a class="performancingtags" href="http://technorati.com/tag/Framework" rel="tag">Framework</a>, <a class="performancingtags" href="http://technorati.com/tag/MVC" rel="tag">MVC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/06/10/pluf-a-php5-port-of-django/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to compress css &amp; javascript: An alternative to mod_deflate or mod_gzip</title>
		<link>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</link>
		<comments>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 07:35:27 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</guid>
		<description><![CDATA[
So, you have used Website Optimization Analyzer or you installed Yslow for Firefox or you discovered somewhere else that compressing your files (html, javascript &#38; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.
In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my last post about Magento, you should normally be able to enable this safely with the ...]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks--></p>
<p>So, you have used <a href="http://www.websiteoptimization.com/services/analyze/" target="_blank">Website Optimization Analyzer</a> or you installed <a href="https://addons.mozilla.org/en-US/firefox/addon/5369" target="_blank">Yslow for Firefox</a> or you discovered somewhere else that compressing your files (html, javascript &amp; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.</p>
<p>In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my <a href="http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento-ecommerce/" target="_blank">last post about Magento</a>, you should normally be able to enable this safely with the following lines inside your .htaccess file in your www root of your website:</p>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<p>Then visit your website and in your browser right-click on the web page and choose &#8220;View Source&#8221;. In the source code, try and find a line that contains your stylesheet, then we go to <a href="http://www.whatsmyip.org/http_compression/" target="_blank">whatsmyip compression checker</a> and we enter the whole URL to your stylesheet there. To test, enter my css url.</p>
<p><code>http://www.opensourcetutor.com/wp-content/themes/hemingwayEx/style.css</code></p>
<p>You should see a big green tick and the site will say the CSS is compressed. Now, if you don&#8217;t, you either haven&#8217;t applied my above .htaccess settings yet or mod_deflate is not enabled on your server for you to access.</p>
<h2>Alternative #1 &#8211; requires Apache mod_rewrite</h2>
<p>This method is probably the best method I have seen to overcome the mod_deflate issue and we are only concerned about javascript and css files for now. PHP has an easy method to compress php files on the fly. What we need to do is gzip all our javascript &amp; css files.</p>
<p>If you have shell access, you can run this command to take of the job for you. It will find each and every javascript file and css file and create a gzip copy.</p>
<p><code>find . -regex ".*\(css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>The line above searches the current directory and any subdirectories for files with extensions .js or .css, then prints out that it is being compressed, then compresses with the highest compression in that directory leaving the original file as is.</p>
<p>Now, we need to tell our browser to access the gzip version *IF* it supports gzip encoding. To do this, we use the following in our .htaccess file. Make sure you have removed the above code if it wasn&#8217;t successful.</p>
<pre>
<code>&lt;files *.js.gz&gt;
  AddType "text/javascript" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
&lt;files *.css.gz&gt;
  AddType "text/css" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
RewriteEngine on
#Check to see if browser can accept gzip files.
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L] </code>
</pre>
<p>The advantage of this Alternative is that our server doesn&#8217;t have to gzip / compress the javascript and css each time it is called. This eases the load up on the server as we already do the compression one time and then just call the compressed version from then after. The other advantage is that we don&#8217;t need to load up mod_deflate each time. This could be advantages if you are running a VPS with very low memory available.</p>
<p>If you have a static website, you could apply the same technique for all your html files. To do so, you would instead use this line:</p>
<p><code>find . -regex ".*\(html\|css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>and then add this into your .htaccess also</p>
<pre>
<code>&lt;files *.html.gz&gt;
  AddType "text/html" .gz
  AddEncoding gzip .gz
&lt;/files&gt;</code>
</pre>
<p><!--adsense#widelinks--></p>
<p>
Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/gzip" rel="tag">gzip</a>, <a class="performancingtags" href="http://technorati.com/tag/mod_deflate" rel="tag">mod_deflate</a>, <a class="performancingtags" href="http://technorati.com/tag/compression" rel="tag">compression</a>, <a class="performancingtags" href="http://technorati.com/tag/yslow" rel="tag">yslow</a>, <a class="performancingtags" href="http://technorati.com/tag/firefox" rel="tag">firefox</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>How to Speed up Magento</title>
		<link>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/</link>
		<comments>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 08:27:30 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=172</guid>
		<description><![CDATA[Having implemented a number of websites now in Magento and being the web hosting provider for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.

Your URL you type into a browser, translates to an IP address &#8211; this check should take a ...]]></description>
			<content:encoded><![CDATA[<p>Having implemented a number of websites now in Magento and being the <a href="http://www.serverspacesolutions.com.au/" target="_blank">web hosting provider</a> for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.</p>
<ol>
<li>Your URL you type into a browser, translates to an IP address &#8211; this check should take a very, very short time</li>
<li>Your browser then begins to access the web server where your website is hosted to ask for the page you want, this can cause some delay, typically 40-200ms (bottleneck 1.)</li>
<li>In the case of Magento,it uses PHP as the software language that runs the site, so the php begins to execute (bottleneck 2.)</li>
<li>PHP then reaches a part of it&#8217;s code it needs to access the database to retrieve website data and sometimes insert information about who you are. (bottleneck 3.)</li>
<li>The PHP code retrieves the information, does a bit more computing on it (for simplicity, this is still bottleneck 2) and then sends it to your web server</li>
<li>Your webserver can then send it or compress it and then send it to you (bottlneck 4)</li>
<li>The data is sent over the internet to your browser (bottlneck 5)</li>
<li>Your browser must &#8216;render&#8217; the data it receives into an actual web page (bottleneck 6)</li>
</ol>
<p>I will assume you are here specifically for Magento issues, so let&#8217;s get started with the basics. I will make the assumption that your web server is running Apache and you have very little control over that.</p>
<h3>Preparation &#8211; the &#8220;before&#8221;</h3>
<ol>
<li>If you are familiar with the, use <a target="_blank" href="http://www.mozilla.com/">Firefox</a> and the <a target="_blank" href="http://www.getfirebug.com/">Firebug extension</a> and the <a target="_blank" href="http://developer.yahoo.com/yslow/">Yslow extension</a>. Take a screenshot of your statistics.
</li>
<li>Alternatively, what I suggest is to go to <a href="http://analyze.websiteoptimization.com/">WebsiteOptimization</a> if you&#8217;re fairly new to this. You basically enter your URL and click. Print out the page, preferably to PDF before we begin.</li>
</ol>
<h3>Check Magento Caching is turned on (if not developing still)</h3>
<ol>
<li>Login to your Magento Admin</li>
<li>go to System -> Cache Management</li>
<li>in the dropdown box, choose &#8220;enable&#8221; and tick all the boxes, then save settings.</li>
</ol>
<h3>Let&#8217;s start simple &#8211; .htaccess and gzip/deflate<br />
</h3>
<ol>
<li>Go to <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> and enter your magento site address. If it comes back with a big green tick and says http://yourmagentosite.com is gzipped, then you&#8217;re in business and skip step 2. If not..go to step 2
</li>
<li>Using ftp or ssh, however you access your magento website, go to the root of the site and find your .htaccess file. Scroll down until you see something like:</li>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    #BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<li>Make sure it looks like above. A hash in front of the line means it&#8217;s commented out. If your .htaccess file does look like this AND <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> is still not showing enabled, you need to talk to your web hosting provider. They may not allow overrides or may not have the deflate module installed or enabled. If it doesn&#8217;t look like the above, remove the hashes from your lines so that it reflects what is above, then retest with <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a></li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)
</li>
</ol>
<h3>Let&#8217;s shrink our javascript</h3>
<ol>
<li>Magento uses A LOT of LARGE javascript libraries and depending on your template, it&#8217;s a good chance that these make up for 50% of your website page size. This should only affect the first page load but it&#8217;s often the first impressions that count, so let&#8217;s shrink it.</li>
<li>For this, we will use the <a target="_blank" href="http://www.magentocommerce.com/extension/457/fooman-speedster">Fooman Speedster Extension</a> from magentoconnect. Click on the &#8220;get extension key&#8221; and then copy the key to your clipboard.</li>
<li>Now go to your magento store admin interface and click on &#8220;System -> Magento Connect -> Magento Connect Manager&#8221;. Enter your admin user/pass to access magento connect manager.
</li>
<li>*Warning &#8211; once you install the extension until you fix your .htaccess, it may break your website*</li>
<li>Paste the extension key to install the extension</li>
<li>Now go to your .htaccess and under the line: #RewriteBase /magento/ add this line
<p><code>RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&amp;amp;d=$2<br />
</code></li>
<li>Save your .htaccess and access your site (it may take a while to load the first time as it minifies and creates it&#8217;s cache.
</li>
<li>**Test your site is working properly**
</li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)</li>
</ol>
<h3>Let&#8217;s check our php settings</h3>
<ol>
<li>Create a file called phpinfo.php and enter this information into it.</li>
<li>Check for the following: memory_limit</li>
<li>If it&#8217;s less than 128M, try and add an entry into your .htaccess like so:
</li>
<p><code>php_value memory_limit 128M</code></p>
</ol>
<h3>Finally, MySQL &#8211; for experienced users.<br />
</h3>
<ol>
<li>If you&#8217;re a mysql hero, you don&#8217;t need me to tell you how but we want to try and get the following settings in your my.cnf
</li>
<p><code>query_cache_type = 1<br />
query_cache_size = 32M<br />
query_cache_limit=2M</code></p>
<li>If you don&#8217;t have root access to check /etc/my.cnf (or /etc/mysql/my.cnf) variables, then login to mysql or use phpmyadmin to show variables.
</li>
<p><code>$ mysql -u mysqluser -p magento_database_name<br />
$ mysql&gt; SHOW VARIABLES;</code></p>
<li>If you don&#8217;t have control over your mysql configuration, go knocking on your Web Host&#8217;s support tickets to get them to modify it to suit you or if you&#8217;re in Australia, <a target="_blank" href="http://www.serverspacesolutions.com.au/">check us out</a>
</li>
</ol>
<p>**If you want someone to do this all for you, lodge a support ticket at <a target="_blank" href="https://www.yourwebhostingsupport.com/index.php?_m=tickets&amp;_a=submit">Yourwebhostingsupport</a> with the Subject &#8220;Magento Optimisation&#8221;</p>
<p><!--adsense#widelinks--></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/magento" rel="tag">magento</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a>, <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/mysql" rel="tag">mysql</a>, <a class="performancingtags" href="http://technorati.com/tag/speed" rel="tag">speed</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Getting and Managing Free Fonts for Linux &#8211; aimed at Ubuntu</title>
		<link>http://www.opensourcetutor.com/2009/04/05/getting-and-managing-free-fonts-for-linux-aimed-at-ubuntu/</link>
		<comments>http://www.opensourcetutor.com/2009/04/05/getting-and-managing-free-fonts-for-linux-aimed-at-ubuntu/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 04:37:33 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Internet Goodness]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Unix & Solaris]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Fonts]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/04/05/getting-and-managing-free-fonts-for-linux-aimed-at-ubuntu/</guid>
		<description><![CDATA[
One area sadly lacking in most Linux installs is the availability of really nice fonts useful for design and great fonts are not cheap, circa $150 for a font set. Best all in one location for getting great free fonts, I think is www.fawnt.com
If Ubuntu really wants to have a go at competing with the Mac, this is certainly an area that needs improving.
You can install fonts system wide by dropping them (or folders of font families) into /usr/share/fonts or alternatively, kfontviewer a KDE application will give you a nice ...]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks-->
<p>One area sadly lacking in most Linux installs is the availability of really nice fonts useful for design and great fonts are not cheap, circa $150 for a font set. Best all in one location for getting great free fonts, I think is <a href="http://www.fawnt.com/" target="_blank">www.fawnt.com</a></p>
<p>If Ubuntu really wants to have a go at competing with the Mac, this is certainly an area that needs improving.</p>
<p>You can install fonts system wide by dropping them (or folders of font families) into /usr/share/fonts or alternatively, kfontviewer a KDE application will give you a nice gui for installing fonts.</p>
<p>Need to manage large amounts of fonts on Linux? Try <a href="http://www.fontmatrix.net/" target="_blank">Fontmatrix</a></p>
<p><code>sudo apt-get install fontmatrix</code></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Graphic%20Design" rel="tag">Graphic Design</a>, <a class="performancingtags" href="http://technorati.com/tag/Fonts" rel="tag">Fonts</a>, <a class="performancingtags" href="http://technorati.com/tag/Free" rel="tag">Free</a>, <a class="performancingtags" href="http://technorati.com/tag/Web%20Design" rel="tag">Web Design</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/04/05/getting-and-managing-free-fonts-for-linux-aimed-at-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

