<?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>Oremj's Blog</title>
	<atom:link href="http://blog.mozilla.org/oremj/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.org/oremj</link>
	<description>Just another Blog.mozilla.com weblog</description>
	<lastBuildDate>Mon, 23 Nov 2009 20:14:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>AssignToMe Bookmarklet</title>
		<link>http://blog.mozilla.org/oremj/2009/11/23/assigntome-bookmarklet/</link>
		<comments>http://blog.mozilla.org/oremj/2009/11/23/assigntome-bookmarklet/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 20:14:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=63</guid>
		<description><![CDATA[I&#8217;ve been trying to cut down on the number of addons I run. Previously I blogged about my Bugzilla &#8220;assigntome&#8221; ubiquity command. Turns out it is really easy to turn it in to a bookmarklet. Just drag AssignToMe to your bookmarks toolbar. Code: javascript:(function() { var logout_re = /[\s\S]*Log.*out.*[\s]\s*(.*)\s/m; var links = document.getElementById('footer').getElementsByClassName('links')[0].getElementsByTagName('li'); var user_name [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been trying to cut down on the number of addons I run. Previously I <a href="http://blog.mozilla.org/oremj/2008/09/12/my-life-is-a-little-bit-easier-now/">blogged</a> about my Bugzilla &#8220;assigntome&#8221; ubiquity command. Turns out it is really easy to turn it in to a bookmarklet. Just drag <a href="javascript:(function(){var logout_re=/[\s\S]*Log.*out.*[\s]\s*(.*)\s/m;var links=document.getElementById('footer').getElementsByClassName('links')[0].getElementsByTagName('li');var user_name=links[links.length-1].textContent.replace(logout_re,'$1');var evt=document.createEvent('MouseEvents');evt.initMouseEvent('click',true,true,window,0,0,0,0,0,false,false,false,false,0,null);document.getElementById('bz_assignee_edit_action').dispatchEvent(evt);document.getElementById('assigned_to').value=user_name;document.getElementById('commit_top').click()})();">AssignToMe</a> to your bookmarks toolbar.</p>
<p>Code:</p>
<pre>
javascript:(function() {
    var logout_re = /[\s\S]*Log.*out.*[\s]\s*(.*)\s/m;
    var links = document.getElementById('footer').getElementsByClassName('links')[0].getElementsByTagName('li');
    var user_name = links[links.length - 1].textContent.replace(logout_re, '$1');
    var evt = document.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    document.getElementById('bz_assignee_edit_action').dispatchEvent(evt);
    document.getElementById('assigned_to').value = user_name;
    document.getElementById('commit_top').click();
})();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2009/11/23/assigntome-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressMU: changing domain names.</title>
		<link>http://blog.mozilla.org/oremj/2009/10/27/wordpressmu-changing-domain-names/</link>
		<comments>http://blog.mozilla.org/oremj/2009/10/27/wordpressmu-changing-domain-names/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 19:12:51 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[System Administration]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=45</guid>
		<description><![CDATA[Unfortunately, changing domain names in WordPressMU is a manual process. It&#8217;s something I&#8217;ve come across often and have to look it up each time. Here&#8217;s what I did, so I don&#8217;t have to look it up again. Original idea from Boris Masis. 1. Drop and run this script in the root wpmu directory: &#60;?php define('WP_INSTALLING', [...]]]></description>
				<content:encoded><![CDATA[<p>Unfortunately, changing domain names in WordPressMU is a manual process. It&#8217;s something I&#8217;ve come across often and have to look it up each time. Here&#8217;s what I did, so I don&#8217;t have to look it up again. Original idea from <a href="http://www.borism.net/2008/12/02/changing-domainsenvironments-in-wordpress-mu/">Boris Masis.</a></p>
<p>1. Drop and run this script in the root wpmu directory:</p>
<pre>&lt;?php
define('WP_INSTALLING', true);
require_once('wp-load.php');

$old_domain = 'olddomain.com';
$new_domain = 'newdomain.com';

$query = "UPDATE wp_site SET domain = '$new_domain' where domain = '$old_domain'";
$wpdb-&gt;query($query);

$query = "UPDATE wp_blogs SET domain = REPLACE(domain, '$old_domain', '$new_domain')";
$wpdb-&gt;query($query);

$querystr ="SHOW TABLES LIKE 'wp_%_options'";

$tables = $wpdb-&gt;get_results($querystr, ARRAY_N);

echo count($tables);
$query = "";
if ($tables){
  foreach ($tables as $table){
    $query = 'UPDATE '.$table[0]." SET option_value = REPLACE(option_value,'$old_domain','$new_domain')";
    $wpdb-&gt;query($query);
  }
}
?&gt;
</pre>
<p>2. Edit wp-config.php and set &#8220;DOMAIN_CURRENT_SITE&#8221; to the appropriate domain.</p>
<p>That&#8217;s it, everything should work properly.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2009/10/27/wordpressmu-changing-domain-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operations Status Dashboard</title>
		<link>http://blog.mozilla.org/oremj/2009/09/21/operations-status-dashboard/</link>
		<comments>http://blog.mozilla.org/oremj/2009/09/21/operations-status-dashboard/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 17:37:05 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=38</guid>
		<description><![CDATA[Often when we have an operational issue or outage confusion occurs. We are taking a step to resolve this confusion by creating a status dashboard similar to Google and Twitter. It is mostly a prototype at this point. How can we make this service more useful? Feedback is greatly appreciated.]]></description>
				<content:encoded><![CDATA[<p>Often when we have an operational issue or outage confusion occurs. We are taking a step to resolve this confusion by creating a <a href="http://appstatus.mozilla.com/">status dashboard</a> similar to <a href="http://www.google.com/appsstatus">Google</a> and <a href="http://status.twitter.com/">Twitter</a>. It is mostly a prototype at this point. How can we make this service more useful? Feedback is greatly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2009/09/21/operations-status-dashboard/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speedup Firefox with VACUUM</title>
		<link>http://blog.mozilla.org/oremj/2009/08/20/speedup-firefox-with-vacuum/</link>
		<comments>http://blog.mozilla.org/oremj/2009/08/20/speedup-firefox-with-vacuum/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 20:34:30 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=34</guid>
		<description><![CDATA[I&#8217;ve seen a few posts about VACUUMing Firefox&#8217;s sqlite database for better performance, but each requires Firefox to be shut down. Here is a way to VACUUM your places database from within the browser. Go to Tools -&#62; Error Console Paste the following in the &#8220;Code:&#8221; text-box: Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM"); Press Enter Your UI will freeze for [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve seen a <a href="http://www.gettingclever.com/2008/06/vacuum-your-firefox-3.html">few</a> <a href="http://petervk.wordpress.com/2009/01/17/use-firefox-3-youll-need-to-vacuum-the-database-once-in-a-while/">posts</a> about VACUUMing Firefox&#8217;s sqlite database for better performance, but each requires Firefox to be shut down.</p>
<p>Here is a way to VACUUM your places database from within the browser.</p>
<ol>
<li>Go to Tools -&gt; Error Console</li>
<li>Paste the following in the &#8220;Code:&#8221; text-box: <code>Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");</code></li>
<li>Press Enter</li>
</ol>
<p>Your UI will freeze for a bit while the vacuum runs.</p>
<p>Resources:</p>
<ul>
<li><a href="https://developer.mozilla.org/En/Updating_extensions_for_Firefox_3.5#Accessing_the_Places_database" rel="nofollow">https://developer.mozilla.org/En/Updating_extensions_for_Firefox_3.5#Accessing_the_Places_database</a></li>
<li><a href="https://developer.mozilla.org/en/Storage" rel="nofollow">https://developer.mozilla.org/en/Storage</a></li>
</ul>
<p>Cross post from <a href="http://blog.oremj.com/2009/08/20/speedup-firefox-with-vacuum/">my personal blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2009/08/20/speedup-firefox-with-vacuum/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Mediawiki Google Search Appliance Integration</title>
		<link>http://blog.mozilla.org/oremj/2008/10/15/mediawiki-google-search-appliance-integration/</link>
		<comments>http://blog.mozilla.org/oremj/2008/10/15/mediawiki-google-search-appliance-integration/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 22:15:36 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=24</guid>
		<description><![CDATA[Recently, I was given the task of integrating our old Google Search Appliance with MediaWiki and wrote about it too.  How does that affect you?  If you are using the intranet wiki you should notice the search results are much more relevant.  If you don&#8217;t have access to the intranet wiki and would like to [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, I was given the task of integrating our old <a title="Google Search Appliance" href="http://www.google.com/enterprise/gsa/">Google Search Appliance</a> with <a href="http://www.mediawiki.org/">MediaWiki</a> and <a href="http://blog.oremj.com/2008/10/15/mediawiki-google-search-appliance-integration/">wrote about it</a> too.  How does that affect you?  If you are using the intranet wiki you should notice the search results are much more relevant.  If you don&#8217;t have access to the intranet wiki and would like to integrate mediawiki with your own Google Search Appliance see my <a href="http://blog.oremj.com/2008/10/15/mediawiki-google-search-appliance-integration/">post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2008/10/15/mediawiki-google-search-appliance-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Life is a Little Bit Easier Now</title>
		<link>http://blog.mozilla.org/oremj/2008/09/12/my-life-is-a-little-bit-easier-now/</link>
		<comments>http://blog.mozilla.org/oremj/2008/09/12/my-life-is-a-little-bit-easier-now/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 21:56:17 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/?p=21</guid>
		<description><![CDATA[Lately, I&#8217;ve found the process of assigning a bug to myself slightly cumbersome and wanted to speed up the process. I happen to be a fan of Ubiquity, so I decided to write a command. The command assigntome, by default, changes the assigned to field to your user. The whole process can be automated by [...]]]></description>
				<content:encoded><![CDATA[<p>Lately, I&#8217;ve found the process of assigning a bug to myself slightly cumbersome and wanted to speed up the process.  I happen to be a fan of <a href="http://labs.mozilla.com/projects/ubiquity/">Ubiquity</a>, so I decided to write a command.</p>
<p>The command assigntome, by default, changes the assigned to field to your user.  The whole process can be automated by tacking on the submit noun, which will simulate clicking the &#8220;Commit&#8221; button.</p>
<p>To install assigntome <a href="http://dev.oremj.com/ubiquity.html">subscribe to my Ubiquity feed</a>.</p>
<p>Cross-post from <a href="http://blog.oremj.com/2008/09/12/my-life-is-a-little-bit-easier-now/">blog.oremj.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2008/09/12/my-life-is-a-little-bit-easier-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Efficiently Updating Web Sites on Web Clusters</title>
		<link>http://blog.mozilla.org/oremj/2008/03/14/efficiently-updating-web-sites-on-web-clusters/</link>
		<comments>http://blog.mozilla.org/oremj/2008/03/14/efficiently-updating-web-sites-on-web-clusters/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 17:29:00 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/2008/03/14/efficiently-updating-web-sites-on-web-clusters/</guid>
		<description><![CDATA[Recently, we ran in to a problem with our web content sync setup. Old Setup: Host all web bits on two admin servers Pull via rsync from admin01 server to the apache servers on 5 min staggered cron That setup worked fairly well for us for quite a long time, but it doesn&#8217;t scale. At [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, we ran in to a problem with our web content sync setup.</p>
<p><strong>Old Setup</strong>:</p>
<ul>
<li>Host all web bits on two admin servers</li>
<li>Pull via rsync  from admin01 server to the apache servers on 5 min staggered cron</li>
</ul>
<p>That setup worked fairly well for us for quite a long time, but <strong>it doesn&#8217;t scale</strong>.  At about 18 or 20 apache servers pulling at 5 min intervals the admin server was constantly pegged from all the rsync processes scanning the file system.</p>
<p>We needed something with state, but something that was simple.  Revision control has state, but would the operations be quick enough to be useful?  It turns out <a href="http://git.or.cz/">Git</a> was pretty well suited for the task.</p>
<p><strong>New setup</strong>:</p>
<ul>
<li>Host all bits on admin servers</li>
<li>Commit bits on admin01 on a 5 minute cron in to git</li>
<li>Pull commits via Git to apache servers</li>
</ul>
<p>This new setup scales very well, because we only need one file system scan per 5 minutes instead of 20+.  The Git fetches are very fast.</p>
<p><strong>Initial installation</strong>:</p>
<p><strong>admin01:/etc/xinetd.d/git-daemon</strong>:<br />
<code><br />
service git<br />
{<br />
disable = no<br />
type            = UNLISTED<br />
port            = 9418<br />
socket_type     = stream<br />
wait            = no<br />
user            = nobody<br />
server          = /usr/bin/git-daemon<br />
server_args     = --inetd --export-all --verbose /www<br />
log_on_failure  += USERID<br />
}<br />
</code></p>
<p><strong>Admin01: Import /www</strong>:<br />
<code><br />
cd /www<br />
git-init<br />
git-add .<br />
git-commit -m 'Initial Import'<br />
</code></p>
<p><strong>Apache Servers initial setup</strong>:<br />
<code><br />
git-clone git://admin01/www<br />
</code></p>
<p><strong>Commit Cron on admin01</strong> (add any new files and delete any removed files from the repo):<br />
<code><br />
#!/bin/bash<br />
lockfile="/tmp/git.lock"<br />
if [ -f $lockfile ]; then<br />
if kill -0 $(cat $lockfile); then<br />
echo "$0 appears to be already running."<br />
exit 1<br />
fi<br />
fi<br />
echo $$ &gt; $lockfile<br />
cd /www<br />
/usr/bin/git-add .<br />
/usr/bin/git-commit -a -m "AUTO COMMIT: `date +%FT%T`"<br />
rm -f $lockfile<br />
</code><br />
<strong>Fetch Cron on the apache servers</strong> (fetches origin and then resets the /www to origin):</p>
<p><code><br />
#!/bin/bash<br />
cd /www;<br />
/usr/bin/git-fetch &amp;&amp; /usr/bin/git-reset --hard origin;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2008/03/14/efficiently-updating-web-sites-on-web-clusters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Libc Man Pages</title>
		<link>http://blog.mozilla.org/oremj/2007/05/17/libc-man-pages/</link>
		<comments>http://blog.mozilla.org/oremj/2007/05/17/libc-man-pages/#comments</comments>
		<pubDate>Thu, 17 May 2007 18:58:41 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/2007/05/17/libc-man-pages/</guid>
		<description><![CDATA[I spend about 5 minutes searching for the libc man pages every time I install Debian or Ubuntu. The package is &#8216;manpages-dev&#8217;; now I won&#8217;t forget!]]></description>
				<content:encoded><![CDATA[<p>I spend about 5 minutes searching for the libc man pages every time I install <a href="http://www.debian.org/">Debian</a> or <a href="http://www.ubuntu.com/">Ubuntu</a>.</p>
<p>The package is &#8216;manpages-dev&#8217;; now I won&#8217;t forget!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2007/05/17/libc-man-pages/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>MediaWiki: HttpAuth Plugin</title>
		<link>http://blog.mozilla.org/oremj/2007/01/29/mediawiki-httpauth-plugin/</link>
		<comments>http://blog.mozilla.org/oremj/2007/01/29/mediawiki-httpauth-plugin/#comments</comments>
		<pubDate>Tue, 30 Jan 2007 03:29:59 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[MediaWiki]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/2007/01/29/mediawiki-httpauth-plugin/</guid>
		<description><![CDATA[Using MediaWiki behind http authetication was always slightly annoying in the past. One would have to: Login with their htpasswd credentials Create account if it did not exist already Login with their wiki credentials Remember both sets of credentials This extension reduces the previous four steps into one simple step. Login with htpasswd credentials The [...]]]></description>
				<content:encoded><![CDATA[<p>Using MediaWiki behind http authetication was always slightly annoying in the past.  One would have to:</p>
<ol>
<li> Login with their htpasswd credentials</li>
<li>Create account if it did not exist already</li>
<li>Login with their wiki credentials</li>
<li>Remember both sets of credentials</li>
</ol>
<p>This extension reduces the previous four steps into one simple step.</p>
<ol>
<li>Login with htpasswd credentials</li>
</ol>
<p>The extension can be downloaded at <a href="http://people.mozilla.com/~oremj/HttpAuthPlugin.php">http://people.mozilla.com/~oremj/HttpAuthPlugin.php</a> and setup instructions at <a href="http://www.mediawiki.org/wiki/Extension:HttpAuth">MediaWiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2007/01/29/mediawiki-httpauth-plugin/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SimpleCaptcha Plugin</title>
		<link>http://blog.mozilla.org/oremj/2006/12/28/simplecaptcha-plugin/</link>
		<comments>http://blog.mozilla.org/oremj/2006/12/28/simplecaptcha-plugin/#comments</comments>
		<pubDate>Thu, 28 Dec 2006 22:46:03 +0000</pubDate>
		<dc:creator>oremj</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/oremj/2006/12/28/simplecaptcha-plugin/</guid>
		<description><![CDATA[The other day spent several hours searching for a WordPress MU(WPMU) compatible captcha plugin with no success. I didn&#8217;t care about a robust spam fighting packages with Bayesian filtering etc; all I wanted was very simple and accessible plugin. Yesterday, I came up with SimpleCaptcha. So far SimpleCaptcha seems to be working very well against [...]]]></description>
				<content:encoded><![CDATA[<p>The other day spent several hours searching for a WordPress MU(WPMU) compatible captcha plugin with no success.  I didn&#8217;t care about a robust spam fighting packages with Bayesian filtering etc;  all I wanted was very simple and accessible plugin.  Yesterday, I came up with <a href="http://blog.mozilla.org/oremj/simplecaptcha-plugin/" title="SimpleCaptcha">SimpleCaptcha</a>.  So far SimpleCaptcha seems to be working very well against spam bots.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/oremj/2006/12/28/simplecaptcha-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
