<?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>mFabrik - mobile sites, apps, HTML5 and CMS software development &#187; linux</title>
	<atom:link href="http://blog.mfabrik.com/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mfabrik.com</link>
	<description>Freedom delivered.</description>
	<lastBuildDate>Wed, 03 Aug 2011 09:47:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>One-liner to copy remote MySQL database to local computer</title>
		<link>http://blog.mfabrik.com/2011/07/23/one-liner-to-copy-remote-mysql-database-to-local-computer/</link>
		<comments>http://blog.mfabrik.com/2011/07/23/one-liner-to-copy-remote-mysql-database-to-local-computer/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 16:20:58 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[grant]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1325</guid>
		<description><![CDATA[The following commands dump a MySQL database from a remote server and create a corresponding database on the local computer. The instructions have been tested on OSX and Linux (Ubuntu/Debian). On-line SSH compression is applied, so transferring SQL files, which are text content and compress well, should be around 6x faster than normal. (Well… actually [...]]]></description>
			<content:encoded><![CDATA[<div class="body">
<p>The following commands dump a MySQL database from a remote server and create a corresponding database on the local computer.</p>
<p>The instructions have been tested on OSX and Linux (Ubuntu/Debian). On-line SSH compression is applied, so transferring SQL files, which are text content and compress well, should be around 6x faster than normal.</p>
<p>(Well… actually the script is six lines, but because this is my blog I&#8217;ll decide it doesn&#8217;t count)</p>
<p>The script</p>
<ul class="simple">
<li>Remotely runs mysqldump and puts the result to a local file</li>
<li>Creates a MySQL database and corresponding user with full access to this database</li>
<li>Reads the content of mysqldump to the newly created database</li>
</ul>
<pre class="literal-block"> ssh user@dserver.com -C -o CompressionLevel=9 mysqldump -u YOURDATABASEUSER --password=YOURDATABASEPASSWORD --skip-lock-tables --add-drop-table YOURDATABASENAME &gt; YOURDATABASENAME.sql
mysql -uroot -p
create database YOURDATABASENAME;
connect YOURDATABASENAME;
source YOURDATABASENAME.sql
GRANT ALL ON YOURDATABASENAME.* TO 'YOURDATABASEUSER'@'localhost' identified by 'YOURDATABASEPASSWORD';</pre>
<p>Leave out <tt class="docutils literal">create database</tt> and <tt class="docutils literal">GRANT</tt> for the subsequent runs &#8211; all data on the local computer will be replaced.</p>
</div>
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/07/23/one-liner-to-copy-remote-mysql-database-to-local-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing mobile websites with Firefox Mobile for PC (Fennec desktop)</title>
		<link>http://blog.mfabrik.com/2011/07/08/testing-mobile-websites-with-firefox-mobile-for-pc-fennec-desktop/</link>
		<comments>http://blog.mfabrik.com/2011/07/08/testing-mobile-websites-with-firefox-mobile-for-pc-fennec-desktop/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 19:42:01 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[simulator]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1317</guid>
		<description><![CDATA[Firefox Mobile (Fennec) has also desktop builds. They are very useful for mobile web site testing as the browser is fast, has real keyboard and is only one mouse click away. Here are instructions how to run Firefox Mobile on Ubuntu Linux (tested on 32-bit Ubuntu 10.10) wget http://releases.mozilla.org/pub/mozilla.org/mobile/releases/latest/linux-i686/fennec-5.0.en-US.linux-i686.tar.bz2 tar -xjf fennec-5.0.en-US.linux-i686.tar.bz2 cd fennec ./fennec [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox Mobile (Fennec) has also desktop builds. They are very useful for mobile web site testing as the browser is fast, has real keyboard and is only one mouse click away.</p>
<p>Here are instructions how to run Firefox Mobile on Ubuntu Linux (tested on 32-bit Ubuntu 10.10)</p>
<pre>wget http://releases.mozilla.org/pub/mozilla.org/mobile/releases/latest/linux-i686/fennec-5.0.en-US.linux-i686.tar.bz2
tar -xjf fennec-5.0.en-US.linux-i686.tar.bz2
cd fennec
./fennec</pre>
<p>.. and thats all you need. It works out of the box! 400x times faster than using Android emulator browser.</p>
<p>There are also <a href=" http://releases.mozilla.org/pub/mozilla.org/mobile/releases/latest/">OSX and Windows builds available</a>.</p>
<p><a href="http://blog.mfabrik.com/wp-content/uploads/2011/07/fennec.png"><img class="alignnone size-full wp-image-1318" title="fennec" src="http://blog.mfabrik.com/wp-content/uploads/2011/07/fennec.png" alt="" width="482" height="830" /></a>
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/07/08/testing-mobile-websites-with-firefox-mobile-for-pc-fennec-desktop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sticky session load balancing with Apache and mod_balancer on Ubuntu Linux</title>
		<link>http://blog.mfabrik.com/2011/04/15/sticky-session-load-balancing-with-apache-and-mod_balancer-on-ubuntu-linux/</link>
		<comments>http://blog.mfabrik.com/2011/04/15/sticky-session-load-balancing-with-apache-and-mod_balancer-on-ubuntu-linux/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 08:19:25 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[balancer]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[mod_balancer]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[sticky]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1223</guid>
		<description><![CDATA[Apache 2.2 can do load balancing with sticky sessions. However, there is a catch. You need to use mod_headers module to set a cookie based on the chosen balancer member for the first request and then route the subsequent requests to this client. Use cases You are running a backend servers behind Apache You need [...]]]></description>
			<content:encoded><![CDATA[<p>Apache 2.2 can do load balancing with sticky sessions. However, there is a catch. You need to use mod_headers module to set a cookie based on the chosen balancer member for the first request and then route the subsequent requests to this client.</p>
<p>Use cases</p>
<ul>
<li>You are running a backend servers behind Apache</li>
<li>You need to make sure that the users are served from the same backend every time: the backend itself caches or stores user specific data and this data is not shared across the backends. <a href="http://stackoverflow.com/questions/5650716/are-sticky-sessions-needed-when-load-balancing-plone-3-3-5/5656295#5656295">For example, Plone 3 may have issues with content item creation if sticky sessions are not used</a>.</li>
</ul>
<p>The method described here works in every situation and does not rely on client IP address, etc. The only downside is that if one balancer member goes down all subsequent requests for it will die. So this method can be only used for load balancing, not for high availability (I am not sure if BALANCER_ROUTE_CHANGED environment variable is set when a balancer member is lost and would redirect the clients to a new balancer member).</p>
<p>This requests were tested on Ubuntu Linux, but may as well work in other environments.</p>
<h2>Setting route configution in virtual host</h2>
<p>Create a balancer</p>
<pre>&lt;Proxy balancer://yourlb&gt;
 BalancerMember http://127.0.0.1:13001/ route=1
 BalancerMember http://127.0.0.1:13002/ route=2
 BalancerMember http://127.0.0.1:13003/ route=3
 BalancerMember http://127.0.0.1:13004/ route=4
&lt;/Proxy&gt;</pre>
<p>Set the cookie using mod_headers. Note that the cookie must be in format [session name].[route id] (the dot is required). It seems to be possible to leave session name empty.</p>
<pre>Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED</pre>
<p>Make ProxyPass  follow the cookie (Zope virtual host monster style with HTTPS)</p>
<pre>ProxyPass / balancer://lbsits/http://localhost/VirtualHostBase/https/yoursite.org:443/yourplonesiteid/VirtualHostRoot/ stickysession=ROUTEID</pre>
<p><em>Note: Hard restart is required. apache2ctl graceful is not enough to make new balancer rules effective.<br />
</em></p>
<h2>Testing</h2>
<p>Use wget</p>
<pre>wget -S https://yoursite.org/</pre>
<p>See that Set-Cookie: ROUTE_ID is present and it contains a valid value (is not empty)</p>
<pre>HTTP/1.1 200 OK
 Date: Wed, 13 Apr 2011 15:21:52 GMT
 Server: Zope/(Zope 2.10.9-final, python 2.4.5, linux2) ZServer/1.1 Plone/3.3.3
 Content-Length: 23197
 Expires: Sat, 01 Jan 2000 00:00:00 GMT
 Content-Type: text/html;charset=utf-8
 Content-Language: en
 Set-Cookie: I18N_LANGUAGE="en"; Path=/
 Set-Cookie: ROUTEID=.1; path=/</pre>
<h2>More info</h2>
<ul>
<li><a href="http://blog.mfabrik.com/2011/03/21/session-affinity-sticky-with-nginx-load-balancing/">Sticky sessions with Nginx</a></li>
<li><a href="http://httpd.apache.org/docs/trunk/mod/mod_proxy_balancer.html#example">mod_proxy_balancer example</a></li>
<li><a href="http://collective-docs.plone.org/hosting/apache.html">Misc. Apache docs for Plone</a></li>
</ul>
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/04/15/sticky-session-load-balancing-with-apache-and-mod_balancer-on-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reducing MySQL memory usage on Ubuntu / Debian Linux</title>
		<link>http://blog.mfabrik.com/2011/03/31/reducing-mysql-memory-usage-on-ubuntu-debian-linux/</link>
		<comments>http://blog.mfabrik.com/2011/03/31/reducing-mysql-memory-usage-on-ubuntu-debian-linux/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 10:56:46 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[mtop]]></category>
		<category><![CDATA[ram]]></category>
		<category><![CDATA[res]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virt]]></category>
		<category><![CDATA[virtual memory]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1149</guid>
		<description><![CDATA[If you are running your services on a low end virtual hosting every byte of memory you can save is important. The memory is often the limiting factor of how many applications you can run on VPS: CPUs are shared, memory not, on the same physical host. Low-end VPS come with 512 MB memory or [...]]]></description>
			<content:encoded><![CDATA[<p>If you are running your services on a low end virtual hosting every byte of memory you can save is important. The memory is often the limiting factor of how many applications you can run on VPS: CPUs are shared, memory not, on the same physical host.</p>
<ul>
<li>Low-end VPS come with 512 MB memory or less</li>
<li>Front front-end server Apache / Nginx / Varnish takes &gt; 100 MB +  min. 20 MB for each child process</li>
<li>Memecached takes its toll</li>
<li>MySQL takes 200 &#8211; 400 MB</li>
<li>Each Python / PHP process takes at least 15 MB and you need parallel processes for paraller HTTP requests (FCGI, pre-fork, others&#8230; )</li>
<li>Operating system processes need some memory (SSH, cron, sendmail)</li>
</ul>
<p>As you can see it gets very crowded in 512 MB.</p>
<p>It&#8217;s especially troublesome since the memory is allocated lazily and the memory usage builds up slowly. In some point caches are no longer caches, but swapped to a disk &#8211; virtual memory usage grows beyond available RAM. To keep the server response, everything time critical should fit to RAM once and if the processes themselves don&#8217;t know how to release memory in this situation you need to tune a memory cap for them.</p>
<h2>MySQL memory consumption</h2>
<p>MySQL can be a greedy bastard what comes to memory consumption. Here on this server MySQL seems to take 417M virtual memory which seems to be little excessive for just running two WordPress instances and one Django / Python application:</p>
<pre>1310 mysql     20   0  417M 21100  2776 S  0.0  1.2  0:00.00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/v</pre>
<p>After some tuning I was able to bring it down a bit</p>
<pre>3354 mysql     20   0  276m  19m 2848 S    0  1.2   3:41.19 mysqld</pre>
<p>A reduction of 130 MB, or 1/4 of the server total memory. Not bad.</p>
<p><a href="http://ubuntu-snippets.blogspot.com/2009/02/mtop-mysql-monitor.html">Use mtop to monitor running MySQL</a>, its querieries, etc. so you know what&#8217;s going on. As you can see this MySQL has very good cache rate meaning that basically it is keeping everything in memory. If the content of the sites is less than 10 MBytes total, 400 MB contains plenty of space to cache the content:</p>
<pre>load average: 0.05, 0.08, 0.16 mysqld 5.0.51a-3ubuntu5.8-log up 1 day(s), 19:47 hrs                                                             
2 threads: 1 running, 6 cached. Queries/slow: 187.1K/0 Cache Hit: 99.39%</pre>
<h2>What eats memory</h2>
<p>I am not an expert on MySQL, so I hope someone with more insight could post comments regarding how to tune MySQL for low memory situations and how it is expected to behave.</p>
<p>Some ideas I run through my head</p>
<ul>
<li>MySQL default cache settings are not too tight on Ubuntu/Debian, making it suitable for moderate loads, not low loads. If you don&#8217;t have much content, everything is just kept in memory (even if not needed)</li>
<li>MySQL uses round robin for connections and if there is 100 max connections it will allocate a thread stack for each connection (someone please confirm this &#8211; I found contracting infos).</li>
</ul>
<h2>Configuring MySQL</h2>
<p>Here are listed some methods how to reduce the memory usage. This is what I done on this little box</p>
<p>MySQL is mostly configured in <em>/etc/mysql/my.cnf</em> on Ubuntu / Debian.</p>
<ul>
<li>Let&#8217;s halve key_buffer from 16M to 8M. <a href="http://dev.mysql.com/doc/refman/5.0/en/myisam-key-cache.html">It is used by MyISAM table cache</a>.</li>
<li>Halve <a href="http://techgurulive.com/2010/10/20/query_cache_size-tuning-optimizing-my-cnf-file-for-mysql/">query_cache_size</a>. query_cache_size  = 8M. Also, decrease query_cache_limit to 512 K.</li>
<li><a href="http://www.mysqlperformanceblog.com/2006/05/17/mysql-server-memory-usage/">Each connection, even if idle, will have 256 KB buffer</a>. Decrease the number of max. connections. (XXX: not sure about this). Drop max connections from 100 -&gt; 30, as we do not have that many concurrent visitors on the site. Also, set less aggressive thread_stack size.</li>
</ul>
<p>The final adjustments</p>
<pre>key_buffer              = 8M
max_connections         = 30
query_cache_size        = 8M
query_cache_limit       = 512K
thread_stack            = 128K</pre>
<h2>More info</h2>
<ul>
<li><a href="http://www.zimbio.com/Linux/articles/692/Fine+Tuning+MYSQL+Reducing+Memory+Usage">Fine-tuning MySQL</a></li>
<li><a href="http://www.electrictoolbox.com/mysql-table-storage-engine/">Showing what database engine MySQL tables are using</a></li>
<li><a href="http://www.mysqlperformanceblog.com/2006/05/17/mysql-server-memory-usage/">MySQL server memory usage</a></li>
<li><a href="http://www.lowendbox.com/blog/reducing-mysql-memory-usage-for-low-end-boxes/">Reducing MySQL memory usage for low end boxes</a></li>
</ul>
<p>Send in more tips please! Is 32-bit better than 64-bit for low end VPS, how much this affects MySQL?
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/31/reducing-mysql-memory-usage-on-ubuntu-debian-linux/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Copy/move phpBB3 forum from a server to another computer (Ubuntu/Linux)</title>
		<link>http://blog.mfabrik.com/2011/03/30/copymove-phpbb3-forum-from-a-server-to-another-computer-ubuntulinux/</link>
		<comments>http://blog.mfabrik.com/2011/03/30/copymove-phpbb3-forum-from-a-server-to-another-computer-ubuntulinux/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 13:40:11 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2ctl]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[phpbb]]></category>
		<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1179</guid>
		<description><![CDATA[Here are short instructions what you need to do in order to move / copy phpBB3 forum. Prerequisites What you need in order to benefit from these instructions Basic UNIX command-line knowledge SSH access to the server MySQL access to the database LAMP stack ready on the new server These instructions have been tested on [...]]]></description>
			<content:encoded><![CDATA[<p>Here are short instructions what you need to do in order to move / copy phpBB3 forum.</p>
<h2>Prerequisites</h2>
<p>What you need in order to benefit from these instructions</p>
<ul>
<li>Basic UNIX command-line knowledge</li>
<li>SSH access to the server</li>
<li>MySQL access to the database</li>
<li>LAMP stack ready on the new server</li>
</ul>
<p>These instructions have been tested on Ubuntu/Debian/Linux but they should work in other environments too.</p>
<h2>Write down database access information</h2>
<p>Get password from config.php file on the old server:</p>
<pre>cd /var/www/phpBB3
cat config.php</pre>
<p>Write down database name, username and password.</p>
<h2>Copy files</h2>
<p>Use rsync to remotely copy forum files to a new computer. On new computer, in /var/www folder</p>
<pre>rsync -av --compress-level=9 user@oldserver.com:/var/www/phpBB3 .</pre>
<h2>Dump and copy database</h2>
<p>Execute the following command on the new server. It takes SSH connection to the old server and dumps phpBB3 database to the new server over the SSH connection.</p>
<pre>ssh user@oldserver.com -C -o CompressionLevel=9 mysqldump -u databaseuser --password=databasepassword --skip-lock-tables --add-drop-table databasename &gt; phpbb3.sql</pre>
<h2>Create a new database</h2>
<p>Use the old access information from config.php to create a database with identical access information on the new server. You need a MySQL root access to create new databases.</p>
<pre>mysql -uroot -p</pre>
<p>Create database and grant access to phpBB3 user for it.</p>
<pre>mysql&gt; create database databasename;</pre>
<pre>mysql&gt; GRANT ALL ON databasename.* TO 'databaseuser'@'localhost' identified by 'databasepassword';</pre>
<p>Load the database on the new server from the dump file:</p>
<pre>mysql&gt; connect databasename;</pre>
<pre>mysql&gt; source phpbb3.sql</pre>
<h2>Configure Apache virtualhost for the new server</h2>
<p>The last step is to set-up Apache virtual host on the new server, so you can access the phpBB3 using a domain name. Note that this doesn&#8217;t need to be a real domain name, but you can spoof the domain name using /etc/hosts file on your local workstation.</p>
<p>Add file <em>/etc/apache2/sites-enabled/phpbb3.conf</em> (or pick a filename based on forum name if you host multiple forums)</p>
<pre>&lt;VirtualHost *&gt;
 ServerName yourdomainname.com

 DocumentRoot /var/www/phpBB3
 &lt;Directory /&gt;
   Options FollowSymLinks
   AllowOverride None
 &lt;/Directory&gt;

&lt;/VirtualHost&gt;</pre>
<p>Note that &lt;virtualhost *&gt; may change depending on how Apache has been set up to listen IP addresses and ports. Also if you are using a shared hosting package or VPS you might need to use the server control panel (cPanel) to do this step.</p>
<p>Then check if your new config file is ok and restart Apache:</p>
<pre>apache2ctl configtest
apache2ctl graceful</pre>
<h2>Hosts spoofing trick</h2>
<p>If you are not having a DNS server of your own which you can use for the copy you can always use <a href="http://webandmobile.mfabrik.com/docs/web-and-mobile/user-manual/installation#modifying-your-local-hosts-file">/etc/hosts file trick </a>to spoof domain names. This way you can make Apache to serve the forum from the server even if the forum is not connected to any real domain name yet.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/30/copymove-phpbb3-forum-from-a-server-to-another-computer-ubuntulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing a misbehaving terminal after after software interruption (pdb) or messed up output</title>
		<link>http://blog.mfabrik.com/2011/03/23/fixing-a-misbehaving-terminal-after-after-software-interruption-pdb-or-messed-up-output/</link>
		<comments>http://blog.mfabrik.com/2011/03/23/fixing-a-misbehaving-terminal-after-after-software-interruption-pdb-or-messed-up-output/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 13:07:25 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[enter key]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[new line]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[sane]]></category>
		<category><![CDATA[ssty]]></category>
		<category><![CDATA[stops working]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tty]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1147</guid>
		<description><![CDATA[Preface Your terminal on Linux or OSX may end up to a bad state. You cat a binary file to terminal You interrupt pdb or some other application reading lines in a bad way Symptoms New lines don&#8217;t work You cannot see your own typing to terminal Backspace stops working Fix Type command stty sane [...]]]></description>
			<content:encoded><![CDATA[<h2>Preface</h2>
<p>Your terminal on Linux or OSX may end up to a bad state.</p>
<ul>
<li>You cat a binary file to terminal</li>
<li>You interrupt pdb or some other application reading lines in a bad way</li>
</ul>
<h2>Symptoms</h2>
<ul>
<li>New lines don&#8217;t work</li>
<li>You cannot see your own typing to terminal</li>
<li>Backspace stops working</li>
</ul>
<h2>Fix</h2>
<p>Type command</p>
<pre>stty sane</pre>
<p>This may fix some problems without needing to restart the terminal. <a href="http://www.peachpit.com/articles/article.aspx?p=659655&amp;seqNum=13">More info</a>.
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/23/fixing-a-misbehaving-terminal-after-after-software-interruption-pdb-or-messed-up-output/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>rsync: remote copy incrementally and on-line compressed</title>
		<link>http://blog.mfabrik.com/2011/03/21/rsync-remote-copy-incrementally-and-on-line-compressed/</link>
		<comments>http://blog.mfabrik.com/2011/03/21/rsync-remote-copy-incrementally-and-on-line-compressed/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 13:02:51 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1137</guid>
		<description><![CDATA[rsync is a UNIX command to synchronize files and folders between two computers. It is very useful to download files to and from the server. The key difference to more commonly used scp (SSH copy) is that rsync can do incremental copies: it only copies the modified files. This is especially useful if you sync [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Rsync">rsync is a UNIX command to synchronize files and folders between two computers</a>. It is very useful to download files to and from the server. The key difference to more commonly used scp (SSH copy) is that rsync can do incremental copies: it only copies the modified files. This is especially useful if you sync a large source code tree between different computers. rsync should be in any developer&#8217;s toolbox who are working with UNIX based software and deployments.</p>
<p>rsync works over SSH by default (I think it was over telnet by default in long past, but nowadays it&#8217;s SSH based, someone please refresh my memory). rsync also supports SSH:s on-line compression, which greatly reduces bytes needed to transfer when copying textual content (source code, logs).</p>
<p>To copy a remote folder to your local computer:</p>
<p>rsync &#8211;compress-level=9 -av username@server:/home/user/yourlogfiles</p>
<p>Explanation</p>
<ul>
<li>&#8211;compression-level: Use maximum on-line compression</li>
<li>-a: Archive. Keep file timestamps in intact and copy only modified files.</li>
<li>-v: Verbose. Show what files we are copying.</li>
</ul>
<p>If the copy process is interrupted rsync will resume the copy from the last file it didn&#8217;t manage to copy. In the end rsync tells the copy speed and (incremental) speed-up stats:</p>
<pre>sent 376 bytes  received 80696946 bytes  658753.65 bytes/sec
total size is 2604253766  speedup is 32.2</pre>
<p>Note: incremental copy might be confused by continuously changing files (logs, databases).</p>
<p>See also <a href="http://blog.mfabrik.com/2011/03/02/scp-file-copy-with-on-line-compression/">a prior blog post about scp copy and compression level</a>.
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/21/rsync-remote-copy-incrementally-and-on-line-compressed/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setting up Apache virtual hosts behind Varnish</title>
		<link>http://blog.mfabrik.com/2011/03/04/setting-up-apache-virtual-hosts-behind-varnish/</link>
		<comments>http://blog.mfabrik.com/2011/03/04/setting-up-apache-virtual-hosts-behind-varnish/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 10:44:28 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[listen]]></category>
		<category><![CDATA[namevirtualhost]]></category>
		<category><![CDATA[ports]]></category>
		<category><![CDATA[static media]]></category>
		<category><![CDATA[varnish]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1058</guid>
		<description><![CDATA[Varnish is a very fast front end cache server. You might want to use it at the front of Apache to speed up loading of your static pages and static media, for example for your WordPress blog. You can also use Varnish backends to multiplex the requests between Plone and Apache based PHP software running [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.varnish-cache.org/">Varnish</a> is a very fast front end cache server. You might want to use it at the front of Apache to speed up loading of your static pages and static media, for example for your WordPress blog. You can also use Varnish backends to multiplex the requests between Plone and Apache based PHP software running on the same server using different <em>backend</em> directives.</p>
<p>However if you wish to use Apache virtual hosts with Varnish there is a trick in it.</p>
<p>We use the following setup</p>
<ul>
<li>Varnish listens to port 80, HTTP</li>
<li>Apache listens to port 81</li>
<li>Varnish uses Apache as a backend</li>
</ul>
<p>The related <em>varnish.vcl</em> is</p>
<pre>backend backend_apache {
.host = "127.0.0.1";
.port = "81";
}

sub vcl_recv {
 ...
 elsif (req.http.host ~ "^blog.mfabrik.com(:[0-9]+)?$") {
    set req.backend = backend_apache;
 }
 ...
}</pre>
<p>Note that the backend IP is 127.0.0.1 (localhost). By default, with Debian or Ubuntu Linux, Apache configuration does not do virtual hosting for this.</p>
<p>So if <em>/etc/apache2/sites-enabled/blog.mfabrik.com </em>looks like:</p>
<pre>&lt;VirtualHost *:81&gt;

 ServerName blog.mfabrik.com
 ...
 LogFormat       combined
 TransferLog     /var/log/apache2/blog.mfabrik.com.log

 ...

 ExpiresActive On
 ExpiresByType image/gif A3600
 ExpiresByType image/png A3600
 ExpiresByType image/image/vnd.microsoft.icon A3600
 ExpiresByType image/jpeg A3600
 ExpiresByType text/css A3600
 ExpiresByType text/javascript A3600
 ExpiresByType application/x-javascript A3600
&lt;/VirtualHost&gt;</pre>
<p>And now the trick &#8211; you need to add the following to <em>/etc/apache2/httpd.conf</em></p>
<pre>NameVirtualHost *:81</pre>
<p>Unless you do all this, Apache will just pick the first virtualhost file in <em>/etc/apache2/sites-enabled</em> and use it for all requests.</p>
<p>Also you need to edit ports.conf and change Apache to listen to port 81:</p>
<pre>Listen 81</pre>
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/04/setting-up-apache-virtual-hosts-behind-varnish/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>scp file copy with on-line compression</title>
		<link>http://blog.mfabrik.com/2011/03/02/scp-file-copy-with-on-line-compression/</link>
		<comments>http://blog.mfabrik.com/2011/03/02/scp-file-copy-with-on-line-compression/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 20:12:22 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[data.fs]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[zodb]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=1048</guid>
		<description><![CDATA[This might come handy if you need to copy a database file (Data.fs) from the remote server to your local computer: scp -C -o CompressionLevel=9 user@yoursite.com:~/plonefolder/zinstance/var/filestorage/Data.fs . This command line enables real-time compression with the highest compression level. This speeds up copying somewhat, as ZODB database compresses pretty well. Get developers  Subscribe mFabrik blog in [...]]]></description>
			<content:encoded><![CDATA[<p>This might come handy if you need to copy a database file (Data.fs) from the remote server to your local computer:</p>
<pre>scp -C -o CompressionLevel=9 user@yoursite.com:~/plonefolder/zinstance/var/filestorage/Data.fs .</pre>
<p>This command line enables real-time compression with the highest compression level. This speeds up copying somewhat, as ZODB database compresses pretty well.
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/03/02/scp-file-copy-with-on-line-compression/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 4 is awesome &#8211; switching back to it</title>
		<link>http://blog.mfabrik.com/2011/02/13/firefox-4-is-awesome-switching-back-to-it/</link>
		<comments>http://blog.mfabrik.com/2011/02/13/firefox-4-is-awesome-switching-back-to-it/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 16:46:10 +0000</pubDate>
		<dc:creator>Mikko Ohtamaa</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[web browser]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox 4]]></category>
		<category><![CDATA[firegestures]]></category>
		<category><![CDATA[gecko]]></category>
		<category><![CDATA[google apps]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mouse gestures]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[panorama]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[speed dial]]></category>
		<category><![CDATA[tab groups]]></category>
		<category><![CDATA[uaswitcher]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://blog.mfabrik.com/?p=970</guid>
		<description><![CDATA[Firefox 4 is awesome.  After being a Google Chrome user for one year, I tried Firefox 4 beta 11. I am switching back to Firefox as my primary browser. As a web power user, I found Firefox 4 gives me more efficient tools to get my work done. It is faster, especially it launches and [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 4 is awesome.  After being a Google Chrome user for one year, I tried Firefox 4 beta 11. I am switching back to Firefox as my primary browser. As a web power user, I found Firefox 4 gives me more efficient tools to get my work done.</p>
<ul>
<li>It is faster, especially it launches and opens new tabs faster than Chrome</li>
<li>User interface has some nice new innovations, like non-intrusive Download pop-ups and password update dialogs</li>
<li>Tab groups (Panorama) allows me to create different &#8220;workspaces&#8221; for leisure time, like Facebook surfing, and work time containing tabs for corporate email and calendar</li>
<li>Sync works across my different computers, though Chrome can also do this nowadays</li>
</ul>
<h2>Tab groups</h2>
<p><a href="http://blog.mfabrik.com/wp-content/uploads/2011/02/Screen-shot-2011-02-13-at-6.34.14-PM.png"><img class="alignnone size-full wp-image-973" title="Screen shot 2011-02-13 at 6.34.14 PM" src="http://blog.mfabrik.com/wp-content/uploads/2011/02/Screen-shot-2011-02-13-at-6.34.14-PM.png" alt="" width="712" height="504" /></a></p>
<p>I have been experiementing with following tab groups which mostly correspond my different &#8220;behavior modes&#8221; I have on when working on a computer</p>
<ul>
<li>Work tabs: email, calendar, docs</li>
<li>Social tabs: Facebook, Twitter and such</li>
<li>Plone, Python and other programming related: All documents and links open, for example copy-pasting them to IRC discussion to give support for someone</li>
</ul>
<p>Note that I had to add &#8220;Tab group&#8221; button manually to toolbar, as it was not added there automatically after update. Just right click on empty space next to tabs and choose &#8220;Customize&#8221;</p>
<h2>Add-ons</h2>
<p>Some add-ons I am using and I haven&#8217;t found equally good alternatives on Google Chrome</p>
<ul>
<li><a href="http://www.new-tab-jumpstart.com/">New Tab JumpStart &#8211; </a>speed dial for your recently visited pages and bookmarks when opening a new tab</li>
<li><a href="http://www.xuldev.org/firegestures/">FireGestures</a> &#8211; Mouse gestures which also work on user interface and not just web pages and which do not mess with right button click</li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/">Web Developer toolbar </a>- test print CSS styles, clear cookies easily, somethign that Firebug doesn&#8217;t do well</li>
<li><a href="http://chrispederick.com/work/user-agent-switcher/">User Agent Switcher</a> (<a href="http://webandmobile.mfabrik.com/docs/web-and-mobile/user-manual/sniffing">needed for mobile site development, some instructions here</a>)</li>
<li>&#8230;. and of course Firebug!</li>
</ul>
<p>I still wish to have add-on sync, so I wouldn&#8217;t need to install add-ons separately on each computer.</p>
<p>Firefox for Mobile (Fennec) does not yet provide as solid experience as its desktop counterpart. Mobile Firefox team definitely need to add some speed to its engine before I can consider it alternative for WebKit on my Android phone. But when it gets there and the sync feature is in the place, I&#8217;ll start using it instantly.
<p class="signature">
<a href="http://mfabrik.com/@@zoho-contact-form"><img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/mfabrik-24.png"></a> <a href="http://mfabrik.com/@@zoho-contact-form">Get developers</a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml"><img valign="middle" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" style="vertical-align:middle;border:0"/></a> <a href="http://feeds.feedburner.com/mFabrikWebAndMobileDevelopment" rel="alternate" type="application/rss+xml">Subscribe mFabrik blog in a reader</a> <a href="http://twitter.com/mfabrik"> <img valign="middle"  src="http://blog.mfabrik.com/wp-content/uploads/twitter-24.png"></a> <a href="http://twitter.com/moo9000">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mfabrik.com/2011/02/13/firefox-4-is-awesome-switching-back-to-it/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

