<?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/"
	>

<channel>
	<title>Mike G's Life</title>
	<atom:link href="http://www.mgimena.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mgimena.com</link>
	<description>the daily endeavor...</description>
	<pubDate>Thu, 18 Feb 2010 07:54:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Remote Resolution of Git Conflicts</title>
		<link>http://www.mgimena.com/2010/02/18/remote-resolution-of-git-conflicts/</link>
		<comments>http://www.mgimena.com/2010/02/18/remote-resolution-of-git-conflicts/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 07:54:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=44</guid>
		<description><![CDATA[You are attempting to push when you experience a conflict:
[ksedgwic@lap2 bonsai-wiki]$ git push
To ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git
 ! [rejected]        master -&#62; master (non-fast forward)
error: failed to push some refs to 'ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git'
First, see if the conflict can be automatically resolved:
[ksedgwic@lap2 bonsai-wiki]$ git pull
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: [...]]]></description>
			<content:encoded><![CDATA[<p>You are attempting to push when you experience a conflict:</p>
<pre>[ksedgwic@lap2 bonsai-wiki]$ git push
To ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git
 ! [rejected]        master -&gt; master (non-fast forward)
error: failed to push some refs to 'ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git'</pre>
<p>First, see if the conflict can be automatically resolved:</p>
<pre>[ksedgwic@lap2 bonsai-wiki]$ git pull
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 3), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki
   fe30702..b52b62c  master     -&gt; origin/master
Auto-merged howtos/vcs/git_conflict.mdwn
CONFLICT (content): Merge conflict in howtos/vcs/git_conflict.mdwn
Automatic merge failed; fix conflicts and then commit the result.</pre>
<p>Git status shows that your state is conflicted:</p>
<pre>[ksedgwic@lap2 bonsai-wiki]$ git status
howtos/vcs/git_conflict.mdwn: needs merge
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 1 different commit(s) each, respectively.
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#
#       unmerged:   howtos/vcs/git_conflict.mdwn
#
no changes added to commit (use "git add" and/or "git commit -a")</pre>
<p><em>IMPORTANT</em> - If you can resolve the conflict do so (normal procedure), this procedure presumes you wish to write the conflicting updates to a branch.</p>
<p>Reset your tree to just your unmerged updates:</p>
<pre>[ksedgwic@lap2 vcs]$ git reset --hard HEAD
HEAD is now at e1497e3 Changed title.</pre>
<p>Create a branch, use a name which suggests a conflict:</p>
<pre>[ksedgwic@lap2 vcs]$ git branch master-conflict-20090125
[ksedgwic@lap2 vcs]$ git branch
* master
  master-conflict-20090125</pre>
<p>Reset your tree to the prior revision:</p>
<pre>[ksedgwic@lap2 vcs]$ git reset --hard HEAD^
HEAD is now at fe30702 started test for creating dual headed branches upon push</pre>
<p>Pull the other persons changes:</p>
<pre>[ksedgwic@lap2 vcs]$ git pull</pre>
<p>Switch back to your branch:</p>
<pre>[ksedgwic@lap2 vcs]$ git checkout master-conflict-20090125
Switched to branch "master-conflict-20090125"</pre>
<p>Push your conflict branch back to the repoistory:</p>
<pre>[ksedgwic@lap2 vcs]$ git push origin master-conflict-20090125
Counting objects: 9, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 406 bytes, done.
Total 5 (delta 3), reused 0 (delta 0)
To ssh://ikiwiki@git.bonsai.com/~/public_git/bonsai-wiki.git
 * [new branch]      master-conflict-20090125 -&gt; master-conflict-20090125
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 3), reused 0 (delta 0)
From /home/ikiwiki/public_git/bonsai-wiki
 * [new branch]      master-conflict-20090125 -&gt; origin/master-conflict-20090125</pre>
<p>complete reference : <a href="http://www.bonsai.com/wiki/howtos/vcs/git_remote_resolve/" target="_blank">http://www.bonsai.com/wiki/howtos/vcs/git_remote_resolve/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2010/02/18/remote-resolution-of-git-conflicts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby on Rails simple tutorials</title>
		<link>http://www.mgimena.com/2010/02/09/ruby-on-rails-simple-tutorials/</link>
		<comments>http://www.mgimena.com/2010/02/09/ruby-on-rails-simple-tutorials/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:10:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=41</guid>
		<description><![CDATA[http://www.tutorialspoint.com/ruby-on-rails/index.htm
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tutorialspoint.com/ruby-on-rails/index.htm" target="_blank">http://www.tutorialspoint.com/ruby-on-rails/index.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2010/02/09/ruby-on-rails-simple-tutorials/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dave Matthews Band</title>
		<link>http://www.mgimena.com/2010/02/09/dave-matthews-band/</link>
		<comments>http://www.mgimena.com/2010/02/09/dave-matthews-band/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 06:28:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=38</guid>
		<description><![CDATA[http://216.178.38.116/index.cfm?fuseaction=music.artistalbums&#38;artistid=5890852&#38;albumid=14916961
]]></description>
			<content:encoded><![CDATA[<p><a href="http://216.178.38.116/index.cfm?fuseaction=music.artistalbums&amp;artistid=5890852&amp;albumid=14916961" target="_blank">http://216.178.38.116/index.cfm?fuseaction=music.artistalbums&amp;artistid=5890852&amp;albumid=14916961</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2010/02/09/dave-matthews-band/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple CSS Menu</title>
		<link>http://www.mgimena.com/2010/02/09/simple-css-menu/</link>
		<comments>http://www.mgimena.com/2010/02/09/simple-css-menu/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 06:25:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=34</guid>
		<description><![CDATA[This is just for future reference ;=)
&#60;html&#62;
	&#60;head&#62;
		&#60;title&#62;CSS based drop-down menu&#60;/title&#62;
	&#60;style type="text/css"&#62;

		ul {
			font-family: Arial, Verdana;
			font-size: 14px;
			margin: 0;
			padding: 0;
			list-style: none;
		}
		ul li {
			display: block;
			position: relative;
			float: left;
		}
		li ul { display: none; }
		ul li a {
			display: block;
			text-decoration: none;
			color: #ffffff;
			border-top: 1px solid #ffffff;
			padding: 5px 15px 5px 15px;
			background: #2C5463;
			margin-left: 1px;
			white-space: nowrap;
		}

		ul li a:hover { background: #617F8A; }
		li:hover ul {
			display: block;
			position: absolute;
		}
		li:hover li [...]]]></description>
			<content:encoded><![CDATA[<pre>This is just for future reference ;=)</pre>
<pre>&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;CSS based drop-down menu&lt;/title&gt;
	&lt;style type="text/css"&gt;

		ul {
			font-family: Arial, Verdana;
			font-size: 14px;
			margin: 0;
			padding: 0;
			list-style: none;
		}
		ul li {
			display: block;
			position: relative;
			float: left;
		}
		li ul { display: none; }
		ul li a {
			display: block;
			text-decoration: none;
			color: #ffffff;
			border-top: 1px solid #ffffff;
			padding: 5px 15px 5px 15px;
			background: #2C5463;
			margin-left: 1px;
			white-space: nowrap;
		}

		ul li a:hover { background: #617F8A; }
		li:hover ul {
			display: block;
			position: absolute;
		}
		li:hover li {
			float: none;
			font-size: 11px;
		}
		li:hover a { background: #617F8A; }
		li:hover li a:hover { background: #95A9B1; }

	&lt;/style&gt;
	&lt;/head&gt;
	&lt;body&gt;

		&lt;ul id="menu"&gt;
			&lt;li&gt;&lt;a href=""&gt;Home&lt;/a&gt;&lt;/li&gt;
		    &lt;li&gt;&lt;a href=""&gt;About&lt;/a&gt;
		      &lt;ul&gt;
		      	&lt;li&gt;&lt;a href=""&gt;The Team&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;History&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Vision&lt;/a&gt;&lt;/li&gt;
		      &lt;/ul&gt;
		    &lt;/li&gt;
		    &lt;li&gt;&lt;a href=""&gt;Products&lt;/a&gt;
		      &lt;ul&gt;
		        &lt;li&gt;&lt;a href=""&gt;Cozy Couch&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Great Table&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Small Chair&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Shiny Shelf&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Invisible Nothing&lt;/a&gt;&lt;/li&gt;
		      &lt;/ul&gt;
		    &lt;/li&gt;
		    &lt;li&gt;&lt;a href=""&gt;Contact&lt;/a&gt;
		      &lt;ul&gt;
		        &lt;li&gt;&lt;a href=""&gt;Online&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Right Here&lt;/a&gt;&lt;/li&gt;
		        &lt;li&gt;&lt;a href=""&gt;Somewhere Else&lt;/a&gt;&lt;/li&gt;
		      &lt;/ul&gt;
		    &lt;/li&gt;
		&lt;/ul&gt;	

	&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="https://www.servage.net/blog/2009/03/20/create-a-cool-css-based-drop-down-menu/" target="_blank">https://www.servage.net/blog/2009/03/20/create-a-cool-css-based-drop-down-menu/</a></p>
<p>enjoy :-p</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2010/02/09/simple-css-menu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How To Deploy Your Rails Application With Phusion Passenger - Site5</title>
		<link>http://www.mgimena.com/2010/01/15/how-to-deploy-your-rails-application-with-phusion-passenger-site5/</link>
		<comments>http://www.mgimena.com/2010/01/15/how-to-deploy-your-rails-application-with-phusion-passenger-site5/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 15:28:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=32</guid>
		<description><![CDATA[Finally, I have found the way to setup my rails application using Phusion Passenger at Site5 hosting.
It works for me! hope this will a stable one.
Visit this link: http://wiki.site5.com/Scripting_and_Development_Guide#Ruby_on_Rails
Yey!
]]></description>
			<content:encoded><![CDATA[<p>Finally, I have found the way to setup my rails application using Phusion Passenger at Site5 hosting.</p>
<p>It works for me! hope this will a stable one.</p>
<p>Visit this link: http://wiki.site5.com/Scripting_and_Development_Guide#Ruby_on_Rails</p>
<p>Yey!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2010/01/15/how-to-deploy-your-rails-application-with-phusion-passenger-site5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to type special characters in MAC</title>
		<link>http://www.mgimena.com/2009/11/03/how-to-type-special-characters-in-mac/</link>
		<comments>http://www.mgimena.com/2009/11/03/how-to-type-special-characters-in-mac/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 10:45:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=29</guid>
		<description><![CDATA[Wondering how to type the letter &#8220;ñ&#8221; in MAC? Well here&#8217;s the link  
enjoy!  -&#62;   http://watchingapple.com/2007/08/tip-how-to-type-a-tilde/
]]></description>
			<content:encoded><![CDATA[<p>Wondering how to type the letter &#8220;ñ&#8221; in MAC? Well here&#8217;s the link <img src='http://www.mgimena.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>enjoy!  -&gt;   http://watchingapple.com/2007/08/tip-how-to-type-a-tilde/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2009/11/03/how-to-type-special-characters-in-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Routing the Rails Way</title>
		<link>http://www.mgimena.com/2009/04/29/routing-the-rails-way/</link>
		<comments>http://www.mgimena.com/2009/04/29/routing-the-rails-way/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 10:29:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=26</guid>
		<description><![CDATA[Reference: http://www.informit.com/articles/article.aspx?p=1087656
If we&#8217;re speaking about route recognition, the bound parameters—key/value pairs in the hash of options at the end of the route&#8217;s argument list—determine what&#8217;s going to happen if and when this route matches an incoming URL. Let&#8217;s say someone requests this URL from their web browser:
http://localhost:3000/myrecipes/apples
This URL will match the ingredient route. The result [...]]]></description>
			<content:encoded><![CDATA[<p>Reference: http://www.informit.com/articles/article.aspx?p=1087656</p>
<p>If we&#8217;re speaking about route recognition, the bound parameters—key/value pairs in the hash of options at the end of the route&#8217;s argument list—determine what&#8217;s going to happen if and when this route matches an incoming URL. Let&#8217;s say someone requests this URL from their web browser:</p>
<pre>http://localhost:3000/myrecipes/apples</pre>
<p>This URL will match the ingredient route. The result will be that the <tt>show</tt> action of the recipes controller will be executed. To see why, look at the route again:</p>
<pre>map.connect 'myrecipes/:ingredient',
            <strong>:controller =&gt; "recipes",</strong>
            :action =&gt; "show"</pre>
<p>The <tt>:controller</tt> and <tt>:action</tt> keys are <em>bound</em>: This route, when matched by a URL, will always take the visitor to exactly that controller and that action. You&#8217;ll see techniques for matching controller and action based on <em>wildcard</em> matching shortly. In this example, though, there&#8217;s no wildcard involved. The controller and action are hard-coded.</p>
<p>Now, when you&#8217;re generating a URL for use in your code, you provide values for all the necessary bound parameters. That way, the routing system can do enough match-ups to find the route you want. (In fact, Rails will complain by raising an exception if you don&#8217;t supply enough values to satisfy a route.)</p>
<p>The parameters are usually bundled in a hash. For example, to generate a URL from the ingredient route, you&#8217;d do something like this:</p>
<pre>&lt;%= link_to "Recipe for apples",
   <strong>:controller =&gt; "recipes",</strong>
   <strong>:action     =&gt; "show",</strong>
   :ingredient =&gt; "apples" %&gt;</pre>
<p>The values <tt>&#8220;recipes&#8221;</tt> and <tt>&#8220;show&#8221;</tt> for <tt>:controller</tt> and <tt>:action</tt> will match the ingredient route, which contains the same values for the same parameters. That means that the pattern string in that route will serve as the template—the blueprint—for the generated URL.</p>
<p>The use of a hash to specify URL components is common to all the methods that produce URLs (<tt>link_to</tt>, <tt>redirect_to</tt>, <tt>form_for</tt>, etc.). Underneath, these methods are making their own calls to <tt>url_for</tt>, a lower-level URL generation method that we&#8217;ll talk about more a little further on.</p>
<p>We&#8217;ve left <tt>:ingredient</tt> hanging. It&#8217;s a wildcard component of the pattern string.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2009/04/29/routing-the-rails-way/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What is DNS?</title>
		<link>http://www.mgimena.com/2009/04/22/what-is-dns/</link>
		<comments>http://www.mgimena.com/2009/04/22/what-is-dns/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 05:14:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<category><![CDATA[dns]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=24</guid>
		<description><![CDATA[The Domain Name System (DNS) is a hierarchical naming system for computers, services, or any resource participating in the Internet. It associates various information with domain names assigned to such participants. Most importantly, it translates domain names meaningful to humans into the numerical (binary) identifiers associated with networking equipment for the purpose of locating and [...]]]></description>
			<content:encoded><![CDATA[<p>The <strong>Domain Name System</strong> (<strong>DNS</strong>) is a hierarchical naming system for computers, services, or any resource participating in the <a title="Internet" href="http://en.wikipedia.org/wiki/Internet">Internet</a>. It associates various information with <a title="Domain name" href="http://en.wikipedia.org/wiki/Domain_name">domain names</a> assigned to such participants. Most importantly, it translates domain names meaningful to humans into the numerical (binary) identifiers associated with networking equipment for the purpose of locating and addressing these devices world-wide. An often used analogy to explain the Domain Name System is that it serves as the &#8220;<a title="Telephone directory" href="http://en.wikipedia.org/wiki/Telephone_directory">phone book</a>&#8221; for the Internet by translating human-friendly computer <a title="Hostname" href="http://en.wikipedia.org/wiki/Hostname">hostnames</a> into <a title="IP address" href="http://en.wikipedia.org/wiki/IP_address">IP addresses</a>. For example, <em><a title="Example.com" href="http://en.wikipedia.org/wiki/Example.com">www.example.com</a></em> translates to <em>208.77.188.166</em>.</p>
<p>The Domain Name System makes it possible to assign <a title="Domain name" href="http://en.wikipedia.org/wiki/Domain_name">domain names</a> to groups of Internet users in a meaningful way, independent of each user&#8217;s physical location. Because of this, <a class="mw-redirect" title="World-Wide Web" href="http://en.wikipedia.org/wiki/World-Wide_Web">World-Wide Web</a> (WWW) <a class="mw-redirect" title="Hyperlinks" href="http://en.wikipedia.org/wiki/Hyperlinks">hyperlinks</a> and Internet contact information can remain consistent and constant even if the current Internet routing arrangements change or the participant uses a mobile device. Internet domain names are easier to remember than IP addresses such as <tt>208.77.188.166</tt> (<a title="IPv4" href="http://en.wikipedia.org/wiki/IPv4">IPv4</a>) or <tt>2001:db8:1f70::999:de8:7648:6e8</tt> (<a title="IPv6" href="http://en.wikipedia.org/wiki/IPv6">IPv6</a>). People take advantage of this when they recite meaningful <a title="Uniform Resource Locator" href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator">URLs</a> and <a title="E-mail address" href="http://en.wikipedia.org/wiki/E-mail_address">e-mail addresses</a> without having to know how the machine will actually locate them.</p>
<p>The Domain Name System distributes the responsibility of assigning domain names and mapping those names to IP addresses by designating <a class="mw-redirect" title="Authoritative name server" href="http://en.wikipedia.org/wiki/Authoritative_name_server">authoritative name servers</a> for each domain. Authoritative name servers are assigned to be responsible for their particular domains, and in turn can assign other authoritative name servers for their sub-domains. This mechanism has made the DNS distributed, fault tolerant, and helped avoid the need for a single central register to be continually consulted and updated.</p>
<p>In general, the Domain Name System also stores other types of information, such as the list of <a class="mw-redirect" title="Mail server" href="http://en.wikipedia.org/wiki/Mail_server">mail servers</a> that accept <a class="mw-redirect" title="Email" href="http://en.wikipedia.org/wiki/Email">email</a> for a given Internet domain. By providing a world-wide, distributed <a title="Keyword" href="http://en.wikipedia.org/wiki/Keyword">keyword</a>-based redirection service, the Domain Name System is an essential component of the functionality of the <a title="Internet" href="http://en.wikipedia.org/wiki/Internet">Internet</a>.</p>
<p>Other identifiers such as RFID tags, UPC codes, International characters in email addresses and host names, and a variety of other identifiers could all potentially utilize DNS <sup id="cite_ref-0" class="reference"><a href="http://en.wikipedia.org/wiki/Domain_Name_System#cite_note-0"><span>[</span>1<span>]</span></a></sup>.</p>
<p>The Domain Name System also defines the technical underpinnings of the functionality of this database service. For this purpose it defines the DNS <a class="mw-redirect" title="Network protocol" href="http://en.wikipedia.org/wiki/Network_protocol">protocol</a>, a detailed specification of the data structures and communication exchanges used in DNS, as part of the <a title="Internet Protocol Suite" href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite">Internet Protocol Suite</a> (TCP/IP). The DNS protocol was developed and defined in the early 1980s and published by the <a title="Internet Engineering Task Force" href="http://en.wikipedia.org/wiki/Internet_Engineering_Task_Force">Internet Engineering Task Force</a> (cf. History).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2009/04/22/what-is-dns/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X keyboard shortcuts</title>
		<link>http://www.mgimena.com/2009/03/21/mac-os-x-keyboard-shortcuts/</link>
		<comments>http://www.mgimena.com/2009/03/21/mac-os-x-keyboard-shortcuts/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 15:42:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

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



Startup


Keystroke
Description


Press X during startup
Force Mac OS X startup


Press Option-Command-Shift-Delete
during startup
Bypass primary startup volume and seek a different startup volume (such as a CD or external disk)


Press C during startup
Start up from a CD that has a system folder


Press N during startup
Attempt to start up from a compatible network server (NetBoot)


Press T during startup
Start up in [...]]]></description>
			<content:encoded><![CDATA[<div class="attr HOW_TO">
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Startup</strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keystroke</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>Press X during startup</td>
<td>Force Mac OS X startup</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Press Option-Command-Shift-Delete<br />
during startup</td>
<td>Bypass primary startup volume and seek a different startup volume (such as a CD or external disk)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Press C during startup</td>
<td>Start up from a CD that has a system folder</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Press N during startup</td>
<td>Attempt to start up from a compatible network server (NetBoot)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Press T during startup</td>
<td>Start up in FireWire Target Disk mode</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Press Shift during startup</td>
<td>start up in Safe Boot mode and temporarily disable login items and non-essential kernel extension files (Mac OS X 10.2 and later)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Press Command-V during startup</td>
<td>Start up in Verbose mode.</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Press Command-S during startup</td>
<td>Start up in Single-User mode</td>
</tr>
</tbody>
</table>
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Finder window</strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keyboard shortcut</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-W</td>
<td>Close Window</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-W</td>
<td>Close all Windows</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Right Arrow</td>
<td>Expand folder (list view)</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-Right Arrow</td>
<td>Expand folder and nested subfolders (list view)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Left Arrow</td>
<td>Collapse Folder (list view)</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-Up Arrow</td>
<td>Open parent folder and close current window</td>
</tr>
<tr bgcolor="#f1f1f1">
<td valign="top">(Assigned in Keyboard &amp; Mouse preferences)</td>
<td valign="top">Show Package Contents (of selected file in Mac OS X 10.5 or later only). To create this contextual menu shortcut, open Keyboard &amp; Mouse preferences in Mac OS X 10.5, click Keyboard Shortcuts, click the &#8220;+&#8221; button, choose Finder.app as the Application, and type &#8220;Show Package Contents&#8221; (exactly), and set whichever shortcut you want, such as Command-Control-S.</td>
</tr>
</tbody>
</table>
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Menu commands</strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keyboard shortcut</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-Q</td>
<td>Apple Menu<br />
Log out</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Shift-Option-Command-Q</td>
<td>Apple Menu<br />
Log out immediately</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-Delete</td>
<td>Finder Menu<br />
Empty Trash</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Shift-Command-Delete</td>
<td>Finder Menu<br />
Empty Trash without dialog</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-H</td>
<td>Finder Menu<br />
Hide Finder</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-H</td>
<td>Finder Menu<br />
Hide Others</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-N</td>
<td>File Menu<br />
New Finder window</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Shift-Command-N</td>
<td>File Menu<br />
New Folder</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-O</td>
<td>File Menu<br />
Open</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-S</td>
<td>File Menu<br />
Save</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-S</td>
<td>File Menu<br />
Save as</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-P</td>
<td>File Menu<br />
Print</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-W</td>
<td>File Menu<br />
Close Window</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-W</td>
<td>File Menu<br />
Close all Windows</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-I</td>
<td>File Menu<br />
Get Info</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-I</td>
<td>File Menu<br />
Show Attributes Inspector</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-D</td>
<td>File Menu<br />
Duplicate</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-L</td>
<td>File Menu<br />
Make Alias</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-R</td>
<td>File Menu<br />
Show original</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-T</td>
<td>File Menu<br />
Add to Favorites (Mac OS X 10.2.8 or earlier), Add to Sidebar (Mac OS X 10.3 or later—use Shift-Command-T for Add to Favorites)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Delete</td>
<td>File Menu<br />
Move to Trash</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-E</td>
<td>File Menu<br />
Eject</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-F</td>
<td>File Menu<br />
Find</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Z</td>
<td>Edit Menu<br />
Undo</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-X</td>
<td>Edit Menu<br />
Cut</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-C</td>
<td>Edit Menu<br />
Copy</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-V</td>
<td>Edit Menu<br />
Paste</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-A</td>
<td>Edit Menu<br />
Select All</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-1</td>
<td>View Menu<br />
View as Icons</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-2</td>
<td>View Menu<br />
View as List</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-3</td>
<td>View Menu<br />
View as Columns</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-B</td>
<td>View Menu<br />
Hide Toolbar</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-J</td>
<td>View Menu<br />
Show View Options</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command - [</td>
<td>Go Menu<br />
Back</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command - ]</td>
<td>Go Menu<br />
Forward</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Shift-Command-C</td>
<td>Go Menu<br />
Computer</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-H</td>
<td>Go Menu<br />
Home</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Shift-Command-I</td>
<td>Go Menu<br />
iDisk</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-A</td>
<td>Go Menu<br />
Applications</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Shift-Command-F</td>
<td>Go Menu<br />
Favorites</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-G</td>
<td>Go Menu<br />
Goto Folder</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-K</td>
<td>Go Menu<br />
Connect to Server</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-M</td>
<td>Window Menu<br />
Minimize Window</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-M</td>
<td>Window Menu<br />
Minimize All Windows</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-?</td>
<td>Help Menu<br />
Open Mac Help</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Space</td>
<td>Open Spotlight (Mac OS X 10.4 or later)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-esc</td>
<td>Front Row<br />
Activates Front Row for certain Apple computers</td>
</tr>
</tbody>
</table>
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Universal Access and <a onclick="s_objectID=&quot;http://www.apple.com/support/country/_1&quot;;return this.s_oc?this.s_oc(e):true" href="http://www.apple.com/support/country/">VoiceOver</a></strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keyboard shortcut</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>Option-Command-8</td>
<td>Turn on Zoom</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-+ (plus)</td>
<td>Zoom in</td>
</tr>
<tr bgcolor="#ffffff">
<td>Option-Command&#8211; (minus)</td>
<td>Zoom out</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-Option-Command-8</td>
<td>Switch to White on Black</td>
</tr>
<tr bgcolor="#ffffff">
<td>Control-F1</td>
<td>Turn on Full Keyboard Access<br />
When Full Keyboard Access is turned on, you can use the key combinations listed in the table below from the Finder.</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-F2</td>
<td>Full Keyboard Access<br />
Highlight Menu</td>
</tr>
<tr bgcolor="#ffffff">
<td>Control-F3</td>
<td>Full Keyboard Access<br />
Highlight Dock</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-F4</td>
<td>Full Keyboard Access<br />
Highlight Window (active) or next window behind it</td>
</tr>
<tr bgcolor="#ffffff">
<td>Control-F5</td>
<td>Full Keyboard Access<br />
Highlight Toolbar</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-F6</td>
<td>Full Keyboard Access<br />
Highlight Utility window (palette)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-F5 or fn-Command-F5</td>
<td>Turn VoiceOver on or off (Mac OS X 10.4 or later)</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-Option-F8 or fn-Control-Option-F8</td>
<td>Open VoiceOver Utility (Mac OS X 10.4 or later)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Control-Option-F7 or fn-Control-option-F7</td>
<td>Display VoiceOver menu (Mac OS X 10.4 or later)</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-Option-;<br />
or fn-Control-option-;</td>
<td>Enable/disable VoiceOver Control-Option lock (Mac OS X 10.4 or later)</td>
</tr>
</tbody>
</table>
<p>The Universal Access preference pane allows you to turn on Mouse Keys. When Mouse Keys is on, you can use the numeric keypad to move the mouse. If your computer doesn&#8217;t have a numeric keypad, use the Fn (function) key.</p>
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Mouse Keys</strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keystroke</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>8</td>
<td>Move Up</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>2</td>
<td>Move Down</td>
</tr>
<tr bgcolor="#ffffff">
<td>4</td>
<td>Move Left</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>6</td>
<td>Move Right</td>
</tr>
<tr bgcolor="#ffffff">
<td>1, 3, 7, and 9</td>
<td>Move Diagonally</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>5</td>
<td>Press Mouse Button</td>
</tr>
<tr bgcolor="#ffffff">
<td>0</td>
<td>Hold Mouse Button</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>. (period on keypad)</td>
<td>Release Mouse Button (use after pressing 0)</td>
</tr>
</tbody>
</table>
<table id="kbtable" border="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2" bgcolor="#e2e2e2"><strong>Other Commands</strong></td>
</tr>
<tr bgcolor="#f1f1f1">
<td><strong>Keystroke</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr bgcolor="#ffffff">
<td>Option-Command-D</td>
<td>Show/Hide Dock</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Tab</td>
<td>Switch application</td>
</tr>
<tr bgcolor="#ffffff">
<td>tab</td>
<td>Highlight next item</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Up Arrow</td>
<td>Move up one directory</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Down Arrow</td>
<td>Move down one directory</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Page Up or Control-Up Arrow</td>
<td>Move up one page</td>
</tr>
<tr bgcolor="#ffffff">
<td>Page Down or Control-Down Arrow</td>
<td>Move down one page</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Drag</td>
<td>Copy to new location</td>
</tr>
<tr bgcolor="#ffffff">
<td>Option-Command-Drag</td>
<td>Make alias in new location</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Drag</td>
<td>Move to new location without copying</td>
</tr>
<tr bgcolor="#ffffff">
<td>Shift-Command-C</td>
<td>Show Colors palette in application</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-T</td>
<td>Show Font palette in application</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Shift-3</td>
<td>Take a picture of the screen</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Shift-4</td>
<td>Take a picture of the selection</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-Shift-4, then press Control while selecting</td>
<td>Take a picture of the screen, place in Clipboard</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-Shift-4, then Spacebar</td>
<td>Take a picture of the selected window</td>
</tr>
<tr bgcolor="#ffffff">
<td>Option-Command-esc</td>
<td>Force Quit</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Control-Eject</td>
<td>Restart, Sleep, Shutdown dialog box</td>
</tr>
<tr bgcolor="#ffffff">
<td>Control-Command-Eject</td>
<td>Quit all applications and restart</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Option-Command-Eject <strong>or</strong><br />
Option-Command-Power</td>
<td>Sleep</td>
</tr>
<tr bgcolor="#ffffff">
<td>Command-click window toolbar button (upper right corner)</td>
<td>Cycle through available views for the window&#8217;s toolbar (dependant on the nature of the Finder or application window)</td>
</tr>
<tr bgcolor="#f1f1f1">
<td>Command-`</td>
<td>Cycle through windows in application or Finder (if more than one window is open)</td>
</tr>
<tr bgcolor="#ffffff">
<td>Function-Delete (portables only&#8211;PowerBook, iBook, MacBook, MacBook Pro)</td>
<td>Forward Delete (delete the character to the right of your cursor)</td>
</tr>
</tbody>
</table>
</div>
<h2></h2>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2009/03/21/mac-os-x-keyboard-shortcuts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How To Setup MogileFS</title>
		<link>http://www.mgimena.com/2009/02/10/how-to-setup-mogilefs/</link>
		<comments>http://www.mgimena.com/2009/02/10/how-to-setup-mogilefs/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 04:43:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[IT Related]]></category>

		<guid isPermaLink="false">http://www.mgimena.com/?p=19</guid>
		<description><![CDATA[Version: 0.03, July 3, 2006
Author: Brett G. Durrett (first name at last name dot net)
Source: http://durrett.net/mogilefs_setup.html
Overview
This document explains how to setup and configure a basic MogileFS installation. It is intended for the novice systems administrator and should enable anybody with the skills to install a basic Linux distro to get MogileFS up and running on [...]]]></description>
			<content:encoded><![CDATA[<p>Version: 0.03, July 3, 2006</p>
<p>Author: Brett G. Durrett (first name at last name dot net)</p>
<p>Source: http://durrett.net/mogilefs_setup.html</p>
<p>Overview</p>
<p>This document explains how to setup and configure a basic MogileFS installation. It is intended for the novice systems administrator and should enable anybody with the skills to install a basic Linux distro to get MogileFS up and running on it.</p>
<p>I am going to assume you have three roles for this setup. A machine should be able to handle more than one role. I will use hosts mogiledb.yourdomain.com, mogiletracker.yourdomain.com and mogilestorage.yourdomain.com \u2013 rename these to meet your needs.<br />
Getting MogileFS</p>
<p>If you look around you can find MogileFS directly on the Danga website, in an abandoned CVS repository and in the current SVN repository. If you pull from the website you will not have admin tools to make setup easier. If you pull from CVS you will have a version from October, 2004. If you pull from SVN you will have a shiny new version that works best with this documentation.</p>
<p>Using svn (http://subversion.tigris.org/), checkout the latest and greatest version (the example below pulls from the trunk).</p>
<p>$ mkdir mogilefs-src<br />
$ cd mogilefs-src<br />
$ svn checkout http://code.sixapart.com/svn/mogilefs/trunk</p>
<p>Installation<br />
Creating a Database</p>
<p>Setting up a MySQL server is beyond the scope of this document \u2013 there are packages available for most distributions, find one that suits your needs. Once you have a MySQL server up and running on host mogiledb.yourdomain.com, create a table and user for MogileFS. Some libraries don&#8217;t play well with new MySQL passwords \u2013 if you use these, set the password using the \u201cOLD_PASSWORD\u201d function. Make sure you change the password to something better than the example.</p>
<p># mysql<br />
mysql&gt; CREATE DATABASE mogilefs;<br />
mysql&gt; GRANT ALL ON mogilefs.* TO &#8216;mogile&#8217;@'%&#8217;;<br />
mysql&gt; SET PASSWORD FOR &#8216;mogile&#8217;@'%&#8217; = OLD_PASSWORD( &#8217;sekrit&#8217; );<br />
mysql&gt; FLUSH PRIVILEGES;<br />
mysql&gt; quit</p>
<p>You will also need to create the schema \u2013 that is covered later in this document.</p>
<p>Setting up the Trackers and Storage Servers</p>
<p>You need to obtain and install the MogileFS-specific perl modules and their dependencies before MogileFS will install successfully. Hopefully you pulled the MogileFS source from the SVN repository \u2013 if so, the server components will be located in the trunk/server directory. You probably need to install dependent modules first (see below) but once all dependencies have been met, you can install Mogile with the following commands (starting in the top of the SVN directory you pulled):</p>
<p># cd trunk/server/<br />
# perl Makefile.PL<br />
# make<br />
# make test<br />
# make install</p>
<p>If you get any errors during this process it will probably be errors telling you that a dependent module is missing. If during the &#8216;make test&#8217; step you get the error, &#8220;t/00-startup&#8230;.DBI connect(&#8217;mysql&#8217;,'root&#8217;,&#8230;) failed: Can&#8217;t connect to local MySQL server through socket &#8216;/var/run/mysqld/mysqld.sock&#8217; (2) at t/lib/mogtestlib.pl line 16&#8243; it can probably be ignored \u2013 it should not be necessary for MySQL to be running on any host other than mogiledb.yourdomain.com.</p>
<p>You probably want to install some helpful utilities on each tracker or storage server as well (these will be needed for later configuration). These are located in the trunk/utils directory and can be installed with the following commands (starting in the top of the SVN directory you pulled):</p>
<p># cd trunk/utils/<br />
# perl Makefile.PL<br />
# make<br />
# make test<br />
# make install</p>
<p>You also want the API \u2013 the utilities will require this. These are located in the trunk/api/perl directory and can be installed with the following commands (starting in the top of the SVN directory you pulled):</p>
<p># cd trunk/api/perl<br />
# perl Makefile.PL<br />
# make<br />
# make test<br />
# make install</p>
<p>Installing Perl Module Dependencies</p>
<p>As for Perl modules, you need (at least) Perlbal and Danga-Socket and any dependencies. If you are not sure how to locate the dependent modules, consider using CPAN (http://cpan.org/) as it can install a module and all of the dependencies. If you already have a reasonable Perl installation you probably have most of the non-MogileFS modules already.</p>
<p>The basic process for installing most perl modules is:</p>
<p>extract the module:</p>
<p># tar -xvzf Linux-AIO-1.9.tar.gz</p>
<p>Create the makefile:</p>
<p># cd Linux-AIO-1.9<br />
# perl Makefile.PL</p>
<p>Build the code:</p>
<p># make</p>
<p>Test the code (some modules may not have this step but it is okay to run anyway):</p>
<p># make test</p>
<p>Install it:</p>
<p># make install</p>
<p>If you see any errors stating that a module dependency is missing, obtain and install the missing module first and try again.<br />
Setup<br />
Database Configuration</p>
<p>The database is empty and will need a schema applied. The &#8216; trunk/server&#8217; directory has a utility named &#8216;mogdbsetup&#8217; to make this process simple. By default it assumes the database is located on localhost so if you are running it from a different host you will need to provide the host name on the command line.</p>
<p># ./mogdbsetup &#8211;dbhost=mogiledb.yourdomain.com &#8211;dbname=mogilefs &#8211;dbuser=mogile &#8211;dbpassword=sekrit</p>
<p>Again, make sure you replace the host and password so that they match you database configuration from above.</p>
<p>The mogdbsetup utility does not specify a table type by default so your tables will match the defaults for your database. In many cases this will mean that you end up with MyISAM tables. If you prefer InnoDB tables you will either need to make sure your database defaults to InnoDB or you can manually convert the tables (both of these are outside of the scope of this document but there are plenty of examples out there).</p>
<p>Tracker Configuration</p>
<p>On each tracker server (mogiletracker.yourdomain.com), create a configuration file at /etc/mogilefs/mogilefsd.conf with the following:</p>
<p>db_dsn DBI:mysql:mogilefs:mogiledb.yourdomain.com<br />
db_user mogile<br />
db_pass sekrit<br />
conf_port 6001<br />
listener_jobs 5</p>
<p>db_dsn points to your database instance. If you are running the database on the same machine as the storage server you can omit &#8220;:mogiledb.yourdomain.com: and it will use the local machine. db_user and db_pass should match the user and password you configured when setting up your database.</p>
<p>The program &#8216;mogilefsd&#8217; will not run as root so you will need to run this as a non-root user. To create a user for this, enter the following command and follow the prompts to create the &#8220;mogile&#8221; user:</p>
<p># adduser mogile</p>
<p>In order to use the tools to setup the storage servers you will need to have the trackers running. Refer to &#8220;Starting Trackers&#8221;, below.</p>
<p>Storage Server Configuration</p>
<p>On each storage server, create the storage directory (make sure it has access permissions for the user you will use to run mogstored):</p>
<p># mkdir /var/mogdata</p>
<p>Configure it:</p>
<p>On each storage server, create a configuration file at /etc/mogilefs/mogstored.conf with the following:</p>
<p>httplisten=0.0.0.0:7500<br />
mgmtlisten=0.0.0.0:7501<br />
docroot=/var/mogdata</p>
<p>Use &#8216;mogadm&#8217; to add each storage server to the database. This requires that the trackers are already running so if you have not already started them, refer to &#8220;Starting Trackers&#8221;, below. You need to supply the Perl lib path which has the &#8216;MogileFS.pm&#8217; perl module installed \u2013 this was installed if you installed the API in the &#8220;Setting up the Trackers and Storage Servers&#8221; section above. The following example would add the host mogilestorage.yourdomain.com as a storage server, assuming that mogilestorage.yourdomain.com had an IP address of 192.168.42.3 (listening on port 7500) and your tracker had an IP address of 192.168.42.1 (listening on port 6001):</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001 host add mogilestorage &#8211;ip=192.168.42.3 &#8211;port=7500 &#8211;status=alive</p>
<p>You can confirm that your host(s) were added with the following command;</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001 host list</p>
<p>You also need to add devices for each storage host. If you don&#8217;t provide a device id mogadm is supposed to do it for you&#8230; in practice I find it dies with an error, so you will need to manually add a unique device id after the host:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001 device add mogilestorage 1</p>
<p>Finally, add the correctly-name device (folder) to each storage host. I have been unable to get the tools to handle this well, so I am probably doing something wrong. As a workaround, I used the modadm device list command to see what device names were assigned and then I added the folders to my storage hosts. Run the following command:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001 device list</p>
<p>It will list each host and the device name followed by its status and storage available. Here is example output:</p>
<p>mogilestorage [1]: alive<br />
used(G) free(G) total(G)<br />
dev1: alive 0.892 67.772 68.664</p>
<p>This means &#8220;mogilestorage&#8221; has a host id of &#8220;1&#8243; and it has one device named &#8220;dev1&#8243; on it and that device is in the &#8220;alive&#8221; state (your other statistics will probably be zeros). Using the example output above, you would simply create the directory on mogilestorage.yourdomain.com:</p>
<p># mkdir -p /vag/mogdata/dev1</p>
<p>Finally, confirm your devices are configured:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001 device list</p>
<p>Running MogileFS</p>
<p>Starting Storage Servers</p>
<p>Start each storage server (mogilestorage.yourdomain.com) by running the following command as root:</p>
<p># mogstored &#8211;daemon</p>
<p>Starting Trackers</p>
<p>Trackers will not run as root so you will need to run them as another user. If you created the &#8220;mogile&#8221; user when seetingup the trackers, the following commands will work (assumes you start logged in to mogiletracker.yourdomain.com as root):</p>
<p># su mogile<br />
$ mogilefsd -c /etc/mogilefs/mogilefsd.conf &#8211;daemon<br />
$ exit</p>
<p>You can confirm that the trackers are running with the following command:</p>
<p># ps aux | grep mogilefsd</p>
<p>If you don&#8217;t get a list of running processes the trackers are not running.<br />
Try It</p>
<p>Do a Quick Sanity Test</p>
<p>The &#8216;mogadm&#8217; tool can be used to make sure your trackers are functioning. You need to supply the Perl lib path which has the &#8216;MogileFS.pm&#8217; perl module installed \u2013 this was installed if you installed the API in the &#8220;Setting up the Trackers and Storage Servers&#8221; section above. The following example would check all mogile components using the trackers at IP address 192.168.42.1 and 192.168.42.2, both listening on port 6001:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001,192.168.42.2:6001 check</p>
<p>Try it with Real Data</p>
<p>Create a domain:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001,192.168.42.2:6001 domain add testdomain</p>
<p>Add a class to the domain:</p>
<p># mogadm &#8211;lib=/usr/local/share/perl/5.8.4 &#8211;trackers=192.168.42.1:6001,192.168.42.2:6001 class add testdomain testclass</p>
<p>Troubleshooting</p>
<p>This section is still very incomplete.  Let me know if you have other common problems that need to be added.</p>
<p>When I run mogadm I get &#8220;Unable to retrieve host information from tracker(s)&#8221;:</p>
<p>mogadm requires the tarckers to be running before it is run.</p>
<p>When starting the storage daemon I get &#8220;ERROR: Directory not found for service mogstored&#8221;:</p>
<p>You did not create a storage directory or you are starting the mogstored as a user that does not have access to the directory.</p>
<p>Problems Connecting:</p>
<p>Make sure your firewall is open. Using the examples in this document, port 7500 and 7501 needed on storage servers, 6001 on trackers.</p>
<p>While testing I get \u201cMogileFS::Backend: couldn&#8217;t connect to mogilefsd backend at /usr/local/share/perl/5.8.4/MogileFS.pm line 56\u201d:</p>
<p>Make sure your tracker connects to the database:</p>
<p># su mogile<br />
$ mogilefsd -c /etc/mogilefs/mogilefsd.conf</p>
<p>I get a &#8220;REQUEST FAILURE&#8221; on &#8220;Checking devices&#8230;&#8221; when doing a mogadm check:</p>
<p>Confirm the devices (folders) exist in the /var/mogdata directory and that the use running the mogstored process has full permissions to these directories. If the device does not exist, add it \u2013 it will take a few seconds for mogadm check to reflect the fixed directory. For example, if mogilestorage.yourdomain.com had the device &#8220;dev1&#8243; on it, you would add the directory:</p>
<p># mkdir -p /vag/mogdata/dev1</p>
<p>Document Revision History</p>
<p>2006-07-03 Version 0.03 Brett G. Durrett: highlighted need to start trackers before using mogadm (and added troubleshooting reference), formatting changes.<br />
2006-06-26 Version 0.02 Brett G. Durrett: minor typo corrections and fixed characters trashed in converting document to html<br />
2006-06-25 Version 0.01 Brett G. Durrett: created initial document</p>
<p>==========================================================</p>
<p>//From: http://www.danga.com/mogilefs/usage.bml<br />
Using MogileFS</p>
<p>Using the provided Perl API, here are some examples of how to create the MogileFS object and then to create a new file within MogileFS, how to delete a file, and how to get a file out of MogileFS and to determine where the file is.</p>
<p>An example snippet to create a MogileFS object:</p>
<p>use MogileFS;<br />
my $mogfs = MogileFS-&gt;new(domain =&gt; &#8216;domain_name&#8217;,<br />
hosts  =&gt; [ '10.1.0.11:6001' ],<br />
# only on NFS/disk based installations<br />
root   =&gt; &#8216;/var/mogdata&#8217;,);<br />
die &#8220;Unable to initialize MogileFS object.\n&#8221; unless $mogfs;</p>
<p>Once you have a MogileFS object, it&#8217;s easy to create new files and stick them in the system:</p>
<p>my $fh = $mogfs-&gt;new_file(&#8221;file_key&#8221;, &#8220;file_class&#8221;);<br />
die &#8220;Unable to allocate filehandle.\n&#8221; unless $fh;<br />
$fh-&gt;print($file_contents);<br />
die &#8220;Unable to save file to MogileFS.\n&#8221; unless $fh-&gt;close;</p>
<p>That&#8217;s the simplest way to save a file. Make sure to check the return value of the close function to make sure that it is non-zero.</p>
<p>To get a file&#8217;s contents easily, use this code:</p>
<p>my $file_contents = $mogfs-&gt;get_file_data(&#8221;file_key&#8221;);</p>
<p>Deleting a file is just as simple:</p>
<p>die &#8220;Unable to delete file.\n&#8221; unless<br />
$mogfs-&gt;delete(&#8221;file_key&#8221;);</p>
<p>If you want to get access to an actual representation of the file, you can also ask for the paths to the file. This function will return either an actual filesystem path if you&#8217;re using an NFS/disk based system or a URL. For example:</p>
<p>my @paths = $mogfs-&gt;get_paths(&#8221;file_key&#8221;, $no_verify);</p>
<p>Of note is the second parameter. If set to a true value, this instructs MogileFS not to verify the validity of the first path before returning. If your code is going to verify the data you get back anyway, you might as well set this to true so that you get the paths much faster.</p>
<p>Those are the basics of using the MogileFS client library. This documentation will be expanded as needed.</p>
<p>Source: http://www.maycode.com/index.php/hotspot/35-linux/827-how-to-setup-mogilefs.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mgimena.com/2009/02/10/how-to-setup-mogilefs/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
