<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.ideaexcursion.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Idea Excursion</title>
	
	<link>http://www.ideaexcursion.com</link>
	<description>Technology Musings</description>
	<lastBuildDate>Tue, 29 Jun 2010 21:24:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/us/</creativeCommons:license>		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.ideaexcursion.com/IdeaExcursion" /><feedburner:info uri="ideaexcursion" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://www.ideaexcursion.com/?pushpress=hub" /><item>
		<title>Cache multiple values in a Map Container for fast in-memory lookup</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/du1AYLuP-GY/</link>
		<comments>http://www.ideaexcursion.com/2010/06/29/cache-multiple-values-in-a-map-container-for-fast-in-memory-lookup/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 21:24:15 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Dynamics AX]]></category>
		<category><![CDATA[Dynamics AX 2009]]></category>
		<category><![CDATA[X++]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1517</guid>
		<description><![CDATA[Use this technique to reduce repeated trips to tables to lookup record details. Instead, cache the information once and reap speed benefits throughout your code]]></description>
			<content:encoded><![CDATA[<p>And thus begins my foray in to X++ development for Dynamics AX 2009. Here&#8217;s a proof of concept Job that I created to stuff multiple values into a Map using a Container. This allows me to lookup a few customer details without repeatedly making trips back to CustTable.</p>

<div class="wp_syntax"><div class="code"><pre class="xpp" style="font-family:monospace;"><span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> MapContainerTest<span style="color: #000000;">&#40;</span>Args _args<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    Map                     custNotesMap;
    <span style="color: #0000ff;">Container</span>               custContainer;
    CustTable               custTable;
    SalesSourceSystemId     admarcSystemId <span style="color: #00007f;">=</span> <span style="color: #ff0000;">&quot;DPRADM&quot;</span>;
    <span style="color: #0000ff;">Container</span>               conCustDetails;
        <span style="color: #0000ff;">str</span>                     admarcAccountId <span style="color: #00007f;">=</span> <span style="color: #ff0000;">&quot;000123456&quot;</span>;
    ;
&nbsp;
    custNotesMap <span style="color: #00007f;">=</span> <span style="color: #0000ff;">new</span> Map<span style="color: #000000;">&#40;</span>Types<span style="color: #00007f;">::</span><span style="color: #000000;">String</span><span style="color: #00007f;">,</span> Types<span style="color: #00007f;">::</span><span style="color: #0000ff;">Container</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #0000ff;">while</span> <span style="color: #0000ff;">select</span> AdmarcAccountId<span style="color: #00007f;">,</span> RecId<span style="color: #00007f;">,</span> TableId<span style="color: #00007f;">,</span> dataAreaId<span style="color: #00007f;">,</span> PartyId <span style="color: #0000ff;">from</span> custTable <span style="color: #0000ff;">where</span> custTable.<span style="color: #000000;">AdmarcSystemId</span> <span style="color: #00007f;">==</span> admarcSystemId
    <span style="color: #000000;">&#123;</span>
        custContainer <span style="color: #00007f;">=</span> <span style="color: #0000ff;">conNull</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
        custContainer <span style="color: #00007f;">=</span> <span style="color: #000000;">&#91;</span>custTable.<span style="color: #000000;">RecId</span><span style="color: #00007f;">,</span> custTable.<span style="color: #000000;">TableId</span><span style="color: #00007f;">,</span> custTable.<span style="color: #000000;">dataAreaId</span><span style="color: #00007f;">,</span> custTable.<span style="color: #000000;">PartyId</span><span style="color: #000000;">&#93;</span>;
&nbsp;
        custNotesMap.<span style="color: #000000;">insert</span><span style="color: #000000;">&#40;</span>custTable.<span style="color: #000000;">AdmarcAccountId</span><span style="color: #00007f;">,</span> custContainer<span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: #000000;">&#40;</span>custNotesMap.<span style="color: #0000ff;">exists</span><span style="color: #000000;">&#40;</span>admarcAccountId<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
        conCustDetails <span style="color: #00007f;">=</span> custNotesMap.<span style="color: #000000;">lookup</span><span style="color: #000000;">&#40;</span>admarcAccountId<span style="color: #000000;">&#41;</span>;
    <span style="color: #0000ff;">else</span>
        error<span style="color: #000000;">&#40;</span><span style="color: #ff0000;">&quot;Customer not found.&quot;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
    info<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">strfmt</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">&quot;RecId: %1&quot;</span><span style="color: #00007f;">,</span> <span style="color: #0000ff;">conpeek</span><span style="color: #000000;">&#40;</span>conCustDetails<span style="color: #00007f;">,</span> <span style="color: #000000;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
    info<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">strfmt</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">&quot;TableId: %1&quot;</span><span style="color: #00007f;">,</span> <span style="color: #0000ff;">conpeek</span><span style="color: #000000;">&#40;</span>conCustDetails<span style="color: #00007f;">,</span> <span style="color: #000000;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
    info<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">strfmt</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">&quot;dataAreaId: %1&quot;</span><span style="color: #00007f;">,</span> <span style="color: #0000ff;">conpeek</span><span style="color: #000000;">&#40;</span>conCustDetails<span style="color: #00007f;">,</span> <span style="color: #000000;">3</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
    info<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">strfmt</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">&quot;PartyId: %1&quot;</span><span style="color: #00007f;">,</span> <span style="color: #0000ff;">conpeek</span><span style="color: #000000;">&#40;</span>conCustDetails<span style="color: #00007f;">,</span> <span style="color: #000000;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>In fact, it&#8217;s pretty fast and I&#8217;m using similar caching technique all over the place to speed up large jobs.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/gbCNCutNPRCsoGvuq1Yjw6ZG6Ig/0/da"><img src="http://feedads.g.doubleclick.net/~a/gbCNCutNPRCsoGvuq1Yjw6ZG6Ig/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gbCNCutNPRCsoGvuq1Yjw6ZG6Ig/1/da"><img src="http://feedads.g.doubleclick.net/~a/gbCNCutNPRCsoGvuq1Yjw6ZG6Ig/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/du1AYLuP-GY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/06/29/cache-multiple-values-in-a-map-container-for-fast-in-memory-lookup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/06/29/cache-multiple-values-in-a-map-container-for-fast-in-memory-lookup/</feedburner:origLink></item>
		<item>
		<title>Ubuntu VirtualBox Server Redux Addendum</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/JviRhxvjsvA/</link>
		<comments>http://www.ideaexcursion.com/2010/05/25/ubuntu-virtualbox-server-redux-addendum/#comments</comments>
		<pubDate>Tue, 25 May 2010 11:25:53 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[VirtualBox]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1498</guid>
		<description><![CDATA[There are several attributes and utilities that can be configured or installed to make the experience of managing a VirtualBox server much easier.]]></description>
			<content:encoded><![CDATA[<p>Although the last article on <a title="Ubuntu VirtualBox Server Redux" href="http://www.ideaexcursion.com/2010/03/16/ubuntu-virtualbox-server-redux/">running a VirtualBox server</a> gets you up and running with a minimum installation, there are several things that can be configured or installed to make the experience of managing a VirtualBox server much easier.<br />
<span id="more-1498"></span></p>
<h2>Guest Additions</h2>
<p>Probably the most common need is to install guest additions. Because the virtual machines are running in headless mode, there&#8217;s no menu to easily select &#8220;Install Guest Additions&#8221;. However, this option merely automates the mounting of an ISO. We can replicate this functionality from the command line. Note that the path to the ISO may vary depending on your host environment.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#run this on your host</span>
VBoxManage storageattach <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--storagectl</span> <span style="color: #ff0000;">&quot;IDEController&quot;</span> <span style="color: #660033;">--port</span> <span style="color: #000000;">1</span> <span style="color: #660033;">--device</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--type</span> dvddrive <span style="color: #660033;">--medium</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>virtualbox<span style="color: #000000; font-weight: bold;">/</span>VBoxGuestAdditions.iso
<span style="color: #666666; font-style: italic;">#run these commands on the guest</span>
<span style="color: #666666; font-style: italic;">#install packages necessary to build and install the additions</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential linux-headers-<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uname</span> -r<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#run the Guest Addtions installation and reboot</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>cdrom
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>cdrom<span style="color: #000000; font-weight: bold;">/</span>VBoxLinuxAdditions-x86.run</pre></div></div>

<p>If you&#8217;d like to mount another disc, you&#8217;ll need to eject the ISO first.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#unmount the disc in the guest</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>cdrom
<span style="color: #666666; font-style: italic;">#instruct VirtualBox to emulate an empty drive</span>
VBoxManage storageattach <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--storagectl</span> <span style="color: #ff0000;">&quot;IDEController&quot;</span> <span style="color: #660033;">--port</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--device</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--type</span> dvddrive <span style="color: #660033;">--medium</span> emptydrive</pre></div></div>

<h2>Shared Folders (guest additions neccessary for shared folders)</h2>
<p>Shared folders are a common way to transfer files between guest and host. First, you&#8217;ll need to successfully install guest additions. Once done, adding is easy as following the below template. Just customize the <abbr title="Virtual Machine">VM</abbr> name, share name and host path.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage sharedfolder add <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--name</span> <span style="color: #ff0000;">&quot;dropbox&quot;</span> <span style="color: #660033;">--hostpath</span> ~<span style="color: #000000; font-weight: bold;">/</span>Dropbox<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<h2>Changing the <acronym title="Media Access Control">MAC</acronym> address</h2>
<p>This is probably not a common need, but if you&#8217;ve got <abbr title="Internet Protocol">IP</abbr> addressed reserved for certain devices, you&#8217;ll need to ensure the <acronym title="Media Access Control">MAC</acronym> address stays the same between <abbr title="Virtual Machine">VM</abbr> setups and tear-downs. The change from auto-generated is easy.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#First, check the current MAX address</span>
VBoxManage showvminfo <span style="color: #ff0000;">&quot;LAMP1&quot;</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> NIC\ <span style="color: #000000;">1</span>:
<span style="color: #666666; font-style: italic;">#Now, set the MAC address to whatever you want</span>
VBoxManage modifyvm <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--macaddress1</span> 0800279859FF</pre></div></div>

<h2><abbr title="Universal Serial Bus">USB</abbr> support</h2>
<p>I&#8217;m not sure how many people use <abbr title="Universal Serial Bus">USB</abbr> support in headless mode, but if you need to mount a device directly in the guest OS, VirtualBox provides that ability. Permission settings borrowed from <a title="Virtual Box" href="http://wiki.flexion.org/VirtualBox.html">http://wiki.flexion.org/VirtualBox.html</a></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#Add proper permissions to USB device</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;none /proc/bus/usb usbfs devgid=%s,devmode=664 0 0&quot;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">grep</span> vboxusers <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>group <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-f3</span> <span style="color: #660033;">-d</span><span style="color: #ff0000;">':'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fstab
VBoxManage modifyvm <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--usb</span> on <span style="color: #660033;">--usbehci</span> on</pre></div></div>

<h2>VM Management with VBoxTool</h2>
<p>By far, the best tool I&#8217;ve used for automated VM management is <a title="VBoxTool" href="http://vboxtool.sourceforge.net/">VBoxTool</a>. It&#8217;s really just a collection of scripts to automate tasks, but the killer feature is the autostart and autosave of virtual machines on boot and shutdown. While it facilitates other aspects of VM management, those two alone make it worth the trouble of configuring it.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>vboxtool
<span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>vboxtool
<span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #ff0000;">&quot;http://downloads.sourceforge.net/project/vboxtool/vboxtool/0.4/vboxtool-0.4.zip?use_mirror=kent&quot;</span> <span style="color: #660033;">-O</span> vboxtool-0.4.zip
<span style="color: #c20cb9; font-weight: bold;">unzip</span> vboxtool-0.4.zip
<span style="color: #7a0874; font-weight: bold;">cd</span> script
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> vboxtool<span style="color: #000000; font-weight: bold;">*</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> root:root vboxtool<span style="color: #000000; font-weight: bold;">*</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> vboxtool <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> vboxtoolinit <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d
<span style="color: #c20cb9; font-weight: bold;">sudo</span> update-rc.d vboxtoolinit defaults <span style="color: #000000;">99</span> <span style="color: #000000;">10</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>vboxtool
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>vboxtool
<span style="color: #666666; font-style: italic;">#Configure /etc/vboxtool/machines.conf to register machines with VBoxTool</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'LAMP1,3391'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> machines.conf
<span style="color: #666666; font-style: italic;">#Configure /etc/vboxtool/vboxtool.conf to indicate which user that machines should start under</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;vbox_user='%s'&quot;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whoami</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> vboxtool.conf
vboxtool autostart</pre></div></div>

<p>If for some reason you ever decide to remove VBoxTool, you&#8217;ll need to unregister it from boot with the below command.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">update-rc.d <span style="color: #660033;">-f</span> vboxtoolinit remove</pre></div></div>

<h2>VBoxWeb</h2>
<p>Although the <a title="vboxweb" href="http://vboxweb.blogspot.com/">VBoxWeb</a> project still has some rough edges and the blog isn&#8217;t updated often, it holds a lot of promise. If you&#8217;d like to check it out, use the following commands to download and install it. <a title="Install VirtualBox Web Console - Project Hosting on Google Code" href="http://code.google.com/p/vboxweb/wiki/install">Full guide</a> available on their own website.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> python-simplejson subversion
<span style="color: #c20cb9; font-weight: bold;">svn</span> checkout http:<span style="color: #000000; font-weight: bold;">//</span>vboxweb.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>trunk<span style="color: #000000; font-weight: bold;">/</span> vboxweb-read-only
<span style="color: #7a0874; font-weight: bold;">cd</span> vboxweb-read-only
python VBoxWebSrv.py adduser $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whoami</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;">#Below starts VBoxWeb in the background</span>
python VBoxWebSrv.py <span style="color: #000000; font-weight: bold;">&amp;</span>amp;</pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/6mGYgrHo5AFDYnBsrzdVAAZfxuU/0/da"><img src="http://feedads.g.doubleclick.net/~a/6mGYgrHo5AFDYnBsrzdVAAZfxuU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6mGYgrHo5AFDYnBsrzdVAAZfxuU/1/da"><img src="http://feedads.g.doubleclick.net/~a/6mGYgrHo5AFDYnBsrzdVAAZfxuU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/JviRhxvjsvA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/05/25/ubuntu-virtualbox-server-redux-addendum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/05/25/ubuntu-virtualbox-server-redux-addendum/</feedburner:origLink></item>
		<item>
		<title>Default column value to identity of different column</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/mtGdfqIYytw/</link>
		<comments>http://www.ideaexcursion.com/2010/04/19/default-column-value-to-identity-of-different-column/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 21:09:36 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1507</guid>
		<description><![CDATA[Given a table with one column as an identity, how you default another column to the identity of the first, while retaining the ability to change later]]></description>
			<content:encoded><![CDATA[<p>Thanks to my friend Paul Mayle for putting this one out there:</p>
<blockquote><p>Given a table with columns:<br />
A: int, primary key, identity<br />
B: int, not null</p>
<p>How can I set a default for column B to be the value in column A?</p></blockquote>
<p>This is an interesting problem on a couple levels. First, a computed column won&#8217;t work, because we need the ability to arbitrarily update column B. We could program a trigger, but I prefer to avoid them when possible. Preferably, we could actualize the purpose of the DEFAULT option. Unfortunately, this isn&#8217;t immediately an apparent choice because SQL Server doesn&#8217;t allow you to reference a column in a DEFAULT specification. In fact, according to <abbr title="Books Online">BOL</abbr>, &#8220;Only a constant value, such as a character string; a scalar function (either a  system, user-defined, or CLR function); or NULL can be used as a default.&#8221;<br />
<span id="more-1507"></span><br />
Fortunately, the column which we&#8217;re trying to set a default from had an identity property, and system functions dealing with identity values is the key to using the DEFAULT specification. First, a little code:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> dbo.<span style="color: #202020;">IdentDefault</span>
<span style="color: #808080;">&#40;</span>
	A <span style="color: #0000FF;">INT</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span> <span style="color: #0000FF;">IDENTITY</span> <span style="color: #808080;">&#40;</span><span style="color: #000;">1</span>, <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">PRIMARY</span> <span style="color: #0000FF;">KEY</span>,
	B <span style="color: #0000FF;">INT</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span> <span style="color: #0000FF;">DEFAULT</span> <span style="color: #FF00FF;">SCOPE_IDENTITY</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span>
<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">IdentDefault</span> <span style="color: #0000FF;">DEFAULT</span> <span style="color: #0000FF;">VALUES</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">IdentDefault</span> <span style="color: #0000FF;">DEFAULT</span> <span style="color: #0000FF;">VALUES</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> dbo.<span style="color: #202020;">IdentDefault</span> <span style="color: #0000FF;">DEFAULT</span> <span style="color: #0000FF;">VALUES</span>
&nbsp;
<span style="color: #0000FF;">UPDATE</span> dbo.<span style="color: #202020;">IdentDefault</span> <span style="color: #0000FF;">SET</span> B <span style="color: #808080;">=</span> <span style="color: #000;">10</span> <span style="color: #0000FF;">WHERE</span> A <span style="color: #808080;">=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000FF;">FROM</span> dbo.<span style="color: #202020;">IdentDefault</span></pre></div></div>

<p>And the result:</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;">A           B
----------- -----------
1           10
2           2
3           3</pre></div></div>

<p>As you can see from the above result set, column B defaults to whatever column A contains, yet we can still update column B to whatever value necessary.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/3-r2zV0jIAbBy2V6FafSHX7nsf0/0/da"><img src="http://feedads.g.doubleclick.net/~a/3-r2zV0jIAbBy2V6FafSHX7nsf0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3-r2zV0jIAbBy2V6FafSHX7nsf0/1/da"><img src="http://feedads.g.doubleclick.net/~a/3-r2zV0jIAbBy2V6FafSHX7nsf0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/mtGdfqIYytw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/04/19/default-column-value-to-identity-of-different-column/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/04/19/default-column-value-to-identity-of-different-column/</feedburner:origLink></item>
		<item>
		<title>Ubuntu VirtualBox Server Redux</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/H0nvOuONyks/</link>
		<comments>http://www.ideaexcursion.com/2010/03/16/ubuntu-virtualbox-server-redux/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 17:12:19 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1493</guid>
		<description><![CDATA[Create, operate, and manage a dedicated virtual machine server from the terminal. Full guide on installation and configuring VM's.]]></description>
			<content:encoded><![CDATA[<p>Both VirtualBox and Ubuntu have drastically changed since I wrote <a title="HOWTO: Ubuntu VirtualBox Server" href="http://www.ideaexcursion.com/2008/08/24/howto-ubuntu-virtualbox-server/">HOWTO: Ubuntu VirtualBox Server</a>. In fact, they&#8217;ve change to such a degree that the previous article isn&#8217;t even relevant. Fret not, as I&#8217;ve rebuilt the guide from scratch based on Ubuntu 9.10 Karmic Koala and VirtualBox 3.1.2, which has since been upgraded to 3.1.4.</p>
<p>The only assumptions I&#8217;m making is that a fresh, recent version of Ubuntu is installed on some relatively recent hardware and you have an ISO of the <abbr title="Operating System">OS</abbr> installation. Ideally, you&#8217;re using an Intel Core 2 Duo or better. I installed it with a normal Desktop Edition, but this guide is targeted at command-line management. You&#8217;re welcome to install Server Edition in which you&#8217;re getting a command-line only version of Ubuntu to reduce system requirements and operate with utmost efficiency.<br />
<span id="more-1493"></span></p>
<h3>Install VirtualBox</h3>
<ol>
<li>Add VirtualBox repositories to apt&#8217;s sources (this assumes they&#8217;re not already there)

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span># VirtualBox<span style="color: #000099; font-weight: bold;">\n</span>deb http://download.virtualbox.org/virtualbox/debian karmic non-free<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>apt<span style="color: #000000; font-weight: bold;">/</span>sources.list</pre></div></div>

</li>
<li>Install the public key

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">-O</span> - http:<span style="color: #000000; font-weight: bold;">//</span>download.virtualbox.org<span style="color: #000000; font-weight: bold;">/</span>virtualbox<span style="color: #000000; font-weight: bold;">/</span>debian<span style="color: #000000; font-weight: bold;">/</span>sun_vbox.asc <span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-key</span> add -</pre></div></div>

</li>
<li>Update repo contents and upgrade

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> upgrade</pre></div></div>

</li>
<li>Install main VirtualBox package

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> virtualbox-<span style="color: #000000;">3.1</span></pre></div></div>

</li>
</ol>
<p>That&#8217;s all there is to getting VirtualBox installed. Unfortunately, it&#8217;s not too useful without any virtual machines or operating systems, so that will be our next step.</p>
<h3>Create a Virtual Machine</h3>
<ol>
<li>Create a Virtual Machine named &#8220;LAMP1&#8243; and keep it registered

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage createvm <span style="color: #660033;">--name</span> <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--register</span></pre></div></div>

</li>
<li>Configure the new <abbr title="Virtual Machine">VM</abbr>. The setting should be somewhat obvious, so feel free to tweak as necessary. Memory = 256<abbr title="MegaByte">MB</abbr>, <abbr title="Advanced Configuration and Power Interface">ACPI</abbr>, hardware virtualization, and <abbr title="Virtual Remote Desktop Protocol">VRDP</abbr> enabled. Set the <abbr title="Virtual Remote Desktop Protocol">VRDP</abbr> port to 3391. Make NIC1 be of type bridged and bind that bridge to eth0. If you&#8217;re using wireless, you might need to change this to wlan0 or something similar.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage modifyvm <span style="color: #ff0000;">&quot;LAMP1&quot;</span> \
<span style="color: #660033;">--memory</span> <span style="color: #000000;">256</span> \
<span style="color: #660033;">--acpi</span> on \
<span style="color: #660033;">--hwvirtex</span> on \
<span style="color: #660033;">--vrdp</span> on \
<span style="color: #660033;">--vrdpport</span> <span style="color: #000000;">3391</span> \
<span style="color: #660033;">--nic1</span> bridged \
<span style="color: #660033;">--bridgeadapter1</span> eth0</pre></div></div>

</li>
<li>Create a new hard drive file of size 10<abbr title="GigaByte">GB</abbr> and remember it.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage createhd <span style="color: #660033;">--filename</span> LAMP1.vdi <span style="color: #660033;">--size</span> <span style="color: #000000;">10000</span> <span style="color: #660033;">--remember</span></pre></div></div>

</li>
<li>Add a <acronym title="Serial Advanced Technology Attachment">SATA</acronym> storage controller to the <abbr title="Virtual Machine">VM</abbr> for the hard disk to attach to.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage storagectl <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--name</span> <span style="color: #ff0000;">&quot;SATAController&quot;</span> <span style="color: #660033;">--add</span> sata</pre></div></div>

</li>
<li>Now, bind the <abbr title="Virtual Desktop Image">VDI</abbr> file to the <acronym title="Serial Advanced Technology Attachment">SATA</acronym> controller. This is like plugging the hard drive into a <acronym title="Serial Advanced Technology Attachment">SATA</acronym> port.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage storageattach <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--storagectl</span> <span style="color: #ff0000;">&quot;SATAController&quot;</span> <span style="color: #660033;">--port</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--device</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--type</span> hdd <span style="color: #660033;">--medium</span> <span style="color: #ff0000;">&quot;LAMP1.vdi&quot;</span></pre></div></div>

</li>
<li>Also add an <abbr title="Integrated Disk Electronics">IDE</abbr> controller for things like ISO mounting

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage storagectl <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--name</span> <span style="color: #ff0000;">&quot;IDEController&quot;</span> <span style="color: #660033;">--add</span> ide</pre></div></div>

</li>
<li>Attach <abbr title="Operating System">OS</abbr> installation media to the <abbr title="Integrated Disk Electronics">IDE</abbr> controller.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage storageattach <span style="color: #ff0000;">&quot;LAMP1&quot;</span> <span style="color: #660033;">--storagectl</span> <span style="color: #ff0000;">&quot;IDEController&quot;</span> <span style="color: #660033;">--port</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--device</span> <span style="color: #000000;">0</span> <span style="color: #660033;">--type</span> dvddrive <span style="color: #660033;">--medium</span> ~<span style="color: #000000; font-weight: bold;">/</span>ubuntu-<span style="color: #000000;">9.10</span>-server-i386.iso</pre></div></div>

</li>
</ol>
<p>That&#8217;s it, you&#8217;re done! Well, mostly. Depending on your exact circumstances, you may have to tweak a few things.</p>
<h3>Verify and Start</h3>
<ol>
<li>Verify everything looks good

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxManage showvminfo <span style="color: #ff0000;">&quot;LAMP1&quot;</span></pre></div></div>

</li>
<li>Start the Virtual Machine.

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">VBoxHeadless <span style="color: #660033;">--startvm</span> <span style="color: #ff0000;">&quot;LAMP1&quot;</span></pre></div></div>

</li>
</ol>
<p>The major component to managing virtual machines on the command-line is simply knowing the correct commands and parameters to configure everything. I plan to write an addendum which addresses some advanced features such as <abbr title="Universal Serial Bus">USB</abbr>, remote management, and automated startup/shutdown.</p>
<p><em><strong>Update</strong></em>: The addendum for <a href="http://www.ideaexcursion.com/2010/05/25/ubuntu-virtualbox-server-redux-addendum/" title="Ubuntu VirtualBox Server Redux Addendum">extra features</a> is up.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/h_t117zN8GMH_oOyJlUM4vXxL5E/0/da"><img src="http://feedads.g.doubleclick.net/~a/h_t117zN8GMH_oOyJlUM4vXxL5E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/h_t117zN8GMH_oOyJlUM4vXxL5E/1/da"><img src="http://feedads.g.doubleclick.net/~a/h_t117zN8GMH_oOyJlUM4vXxL5E/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/H0nvOuONyks" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/03/16/ubuntu-virtualbox-server-redux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/03/16/ubuntu-virtualbox-server-redux/</feedburner:origLink></item>
		<item>
		<title>Updating SSH known hosts fingerprints (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/CbXPv8k0aOE/</link>
		<comments>http://www.ideaexcursion.com/2010/02/08/updating-ssh-known-hosts-fingerprints-warning-remote-host-identification-has-changed/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:16:50 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1479</guid>
		<description><![CDATA[If the RSA host key has changed, SSH will block you from connecting. Bypassing this warning is easy as removing and re-storing the known host fingerprint.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve previously connected to an ssh server on a machine and reformatted or fundamentally changed the OS in some way, the RSA host key will have changed, causing ssh to throw up an ugly error as exhibited here:</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;">@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
8b:ff:a1:b5:32:06:4d:fd:2e:2f:67:80:9e:ba:8d:ff.
Please contact your system administrator.
Add correct host key in /home/taylorg/.ssh/known_hosts to get rid of this message.
Offending key in /home/taylorg/.ssh/known_hosts:2
RSA host key for 192.168.1.100 has changed and you have requested strict checking.
Host key verification failed.</pre></div></div>

<p>All the message says is that the fingerprint for the host that was previously stored no longer matches the target. If you know this is okay and want to clear out the error, the process is very simple &#8211; just remove the stored fingerprint.<br />
<span id="more-1479"></span><br />
You have a couple of options how to do this depending on your situation:<br />
The first, preferable method would be to use ssh-keygen with the following syntax:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> <span style="color: #660033;">-R</span> <span style="color: #c20cb9; font-weight: bold;">hostname</span></pre></div></div>

<p>Assuming all goes well, you should receive a message similar to this:</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;">/home/taylorg/.ssh/known_hosts updated.</pre></div></div>

<p>Alternatively, if ssh-keygen is not available for some reason, you can manually update the known_hosts file:</p>
<ol>
<li>Open up the known hosts file:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nano</span> ~<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>known_hosts</pre></div></div>

</li>
<li>Delete the line containing the hostname of the server you&#8217;re trying to connect to (Ctrl+K). The name should be the left-most item on each line, or use Ctrl+W to search.</li>
<li>Ctrl+O to save the file, then Ctrl+X to exit nano.</li>
</ol>
<p>Try to ssh again (ssh username@hostname) and you should receive a message akin to the following:</p>

<div class="wp_syntax"><div class="code"><pre class="non" style="font-family:monospace;">The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
RSA key fingerprint is 8b:ff:a1:b5:32:06:4d:fd:2e:2f:67:80:9e:ba:8d:ff.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.100' (RSA) to the list of known hosts.</pre></div></div>

<p>As the last message indicates, the ssh client will store the current fingerprint back into known_hosts, bypassing the warning for future connections.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/JDlQgXlGD8J9M6_FlbQD8buUW5M/0/da"><img src="http://feedads.g.doubleclick.net/~a/JDlQgXlGD8J9M6_FlbQD8buUW5M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JDlQgXlGD8J9M6_FlbQD8buUW5M/1/da"><img src="http://feedads.g.doubleclick.net/~a/JDlQgXlGD8J9M6_FlbQD8buUW5M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/CbXPv8k0aOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/02/08/updating-ssh-known-hosts-fingerprints-warning-remote-host-identification-has-changed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/02/08/updating-ssh-known-hosts-fingerprints-warning-remote-host-identification-has-changed/</feedburner:origLink></item>
		<item>
		<title>HOWTO: Create Email Forwarders in Google Apps</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/lHv5JoNsImY/</link>
		<comments>http://www.ideaexcursion.com/2010/01/18/howto-create-email-forwarders-in-google-apps/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 21:37:54 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[HOWTO]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1473</guid>
		<description><![CDATA[Google Apps provides a robust Groups feature which can be configured to act just like a traditional forwarder or enhanced for greater flexibility and control.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve signed up for Google Apps, it may not be immediately apparent if email forwarders are supported; fortunately for everyone, they are. But they&#8217;re not called &#8220;forwarders&#8221; and aren&#8217;t managed quite like traditional forwarders. Instead, Google Apps provides a much more robust Groups feature which allows greater control over who can send mail and how many people receive it. With just a few steps, we can configure Groups to act just like a traditional forwarder.<br />
<span id="more-1473"></span><br />
First, ensure that you&#8217;re in the right place by getting to the groups section. Select the &#8220;Users and Groups&#8221; tab, Groups sub-tab, then click on &#8220;Create a new group&#8221;.</p>
<div id="attachment_1472" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ideaexcursion.com/wp-content/uploads/2010/01/groups.png"><img class="size-medium wp-image-1472" title="Groups" src="http://www.ideaexcursion.com/wp-content/uploads/2010/01/groups-300x113.png" alt="Groups" width="300" height="113" /></a><p class="wp-caption-text">Groups</p></div>
<p>Enter the name and address of the group. Set the Access level to &#8220;Team&#8221; and check the checkbox labeled &#8220;Also allow anyone on the internet to post messages&#8221;. When done, click &#8220;Create new group&#8221;.</p>
<div id="attachment_1470" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ideaexcursion.com/wp-content/uploads/2010/01/create-new-group.png"><img class="size-medium wp-image-1470" title="Create New Group" src="http://www.ideaexcursion.com/wp-content/uploads/2010/01/create-new-group-300x276.png" alt="Create New Group" width="300" height="276" /></a><p class="wp-caption-text">Create New Group</p></div>
<p>This next step is technically optional, but necessary if you&#8217;d like to restrict normal members from seeing the contents of the forwarder. If this is the case, we need to set custom permissions and de-select all but &#8220;Owner&#8221; for &#8220;View member list&#8221;. If this doesn&#8217;t concern you, feel free to skip this.</p>
<div id="attachment_1471" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ideaexcursion.com/wp-content/uploads/2010/01/group-permissions.png"><img class="size-medium wp-image-1471" title="Custom Group Permissions" src="http://www.ideaexcursion.com/wp-content/uploads/2010/01/group-permissions-300x206.png" alt="Custom Group Permissions" width="300" height="206" /></a><p class="wp-caption-text">Custom Group Permissions</p></div>
<p>Finally, we need to add actual addresses to forward to. And this is the beauty of Google, is that you can forward to as many email addresses as necessary. If you only need to enter a single address, that&#8217;s fine too.</p>
<div id="attachment_1469" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ideaexcursion.com/wp-content/uploads/2010/01/add-group-members.png"><img class="size-medium wp-image-1469" title="Add Group Members" src="http://www.ideaexcursion.com/wp-content/uploads/2010/01/add-group-members-300x226.png" alt="Add Group Members" width="300" height="226" /></a><p class="wp-caption-text">Add Group Members</p></div>
<p>Much like labels in Gmail, Google has gone a step beyond, by allowing you to forward emails to any number of users on and off the domain. This feature has a minor learning curve, but just as users quickly adapted to labels instead of folders, managing groups is no more difficult than individual forwarders.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/mBfIq-NyuOmLpto-i-Yh-ga4qqU/0/da"><img src="http://feedads.g.doubleclick.net/~a/mBfIq-NyuOmLpto-i-Yh-ga4qqU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mBfIq-NyuOmLpto-i-Yh-ga4qqU/1/da"><img src="http://feedads.g.doubleclick.net/~a/mBfIq-NyuOmLpto-i-Yh-ga4qqU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/lHv5JoNsImY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/01/18/howto-create-email-forwarders-in-google-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/01/18/howto-create-email-forwarders-in-google-apps/</feedburner:origLink></item>
		<item>
		<title>Import Excel 2007 with SQL Server Import and Export Wizard</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/FLaHQzt2-WA/</link>
		<comments>http://www.ideaexcursion.com/2010/01/06/import-excel-2007-with-sql-server-import-and-export-wizard/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 15:38:02 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1466</guid>
		<description><![CDATA[Neither SQL Server 2008 nor Office 2007 install Microsoft.ACE.OLEDB.12.0 providers. With a small tweak, we can enable connections to Excel and Access 2007.]]></description>
			<content:encoded><![CDATA[<p>If you need to pull in data from an external source ad hoc, using <abbr title="SQL Server Integration Services">SSIS</abbr> is often overkill. Instead, SQL Server Import and Export Wizard (called &#8220;Import and Export Data&#8221; in the Start Menu, but DTSWizard.exe in the filesystem) usually does a good job. This is especially great way to pull in data from users, which typically comes in the form of an Excel attachment. Unfortunately, the providers to import from the newer Office 2007 and 2010 XLSX  file format (also referred to as &#8220;Open Office XML&#8221;) are not available by default and will likely result in a &#8220;Microsoft.ACE.OLEDB.12.0 Provider is not registered&#8221; error. The fix is as easy as  installing the &#8220;<a title="Download Details: 2007 Office System Driver: Data Connectivity Components" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&amp;displaylang=en" target="_blank">2007 Office System Driver: Data Connectivity Components</a>&#8221; package from Microsoft. This same package will also enable access to Access 2007.<br />
<span id="more-1466"></span><br />
After installation, simply re-run DTSWizard and try to import again. If you can&#8217;t find Excel or Access in the Data Source dropdown list, remember that the providers only work in 32-bit mode, and therefore you need to run &#8220;Import and Export Data (32-bit),&#8221; which is located at &#8220;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTSWizard.exe&#8221;.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/iyHf-CxfSustm9D7Ddw1yOqkh2M/0/da"><img src="http://feedads.g.doubleclick.net/~a/iyHf-CxfSustm9D7Ddw1yOqkh2M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iyHf-CxfSustm9D7Ddw1yOqkh2M/1/da"><img src="http://feedads.g.doubleclick.net/~a/iyHf-CxfSustm9D7Ddw1yOqkh2M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/FLaHQzt2-WA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2010/01/06/import-excel-2007-with-sql-server-import-and-export-wizard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2010/01/06/import-excel-2007-with-sql-server-import-and-export-wizard/</feedburner:origLink></item>
		<item>
		<title>Firefox 3.6 Beta 3 now available</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/ls2vCQ5xF88/</link>
		<comments>http://www.ideaexcursion.com/2009/11/17/firefox-3-6-beta-3-now-available/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 04:02:59 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1457</guid>
		<description><![CDATA[More than 80 changes were made to the 3.6 branch since Beta 2. Grab your copy from the beta download page or Help > Check for Updates...]]></description>
			<content:encoded><![CDATA[<p>Just a quick note on a late Tuesday evening: Firefox 3.6 Beta 3 dropped. Go ahead and grab your preferred build from the <a title="Help test the future of Firefox!" href="http://www.mozilla.com/en-US/firefox/all-beta.html" target="_blank">beta download page</a> or a simple click on Help &gt; Check for Updates&#8230; should work. Feel free to check out the <a title="Firefox 3.6 Beta Releaes Notes" href="http://www.mozilla.com/en-US/firefox/3.6b3/releasenotes/" target="_blank">release notes</a>. However, for the real details, peruse over 80 <a title="Bug List" href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=ALL%20status1.9.2:beta3-fixed" target="_blank">changes since Beta 2</a>.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/6Lece4uNiKJXuk0IAHUYzm9OZFg/0/da"><img src="http://feedads.g.doubleclick.net/~a/6Lece4uNiKJXuk0IAHUYzm9OZFg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6Lece4uNiKJXuk0IAHUYzm9OZFg/1/da"><img src="http://feedads.g.doubleclick.net/~a/6Lece4uNiKJXuk0IAHUYzm9OZFg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/ls2vCQ5xF88" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2009/11/17/firefox-3-6-beta-3-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2009/11/17/firefox-3-6-beta-3-now-available/</feedburner:origLink></item>
		<item>
		<title>Microsoft Office 2010 Beta posted on MSDN/TechNet</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/AxlmJCrBt8c/</link>
		<comments>http://www.ideaexcursion.com/2009/11/16/microsoft-office-2010-beta-posted-on-msdntechnet/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 20:12:01 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1450</guid>
		<description><![CDATA[The new Office 2010 Beta just dropped on MSDN and TechNet. The package is available in both 64-bit and 32-bit flavors; download details for both appear below.]]></description>
			<content:encoded><![CDATA[<p>The new Office 2010 Beta was expected this week and just dropped on MSDN and TechNet. Unfortunately, it does appear to be on the faster &#8220;Top Downloads&#8221; servers &#8211; I&#8217;m getting a paltry 450KB/s. The Professional Plus 2010 package is available in both 64-bit and 32-bit flavors; download details for both appear below.<br />
<span id="more-1450"></span></p>
<ul>
<li>File Name: en_office_professional_plus_2010_beta_x64_x16-19234.exe</li>
<li>Size: 749.87 (MB)</li>
<li> Date Posted (UTC): 11/16/2009 7:21:24 AM</li>
<li> ISO/CRC: D5C14D40</li>
<li> SHA1: D07BC0DEE307E05F955CE44825F85084B94595B8</li>
</ul>
<ul>
<li> File Name: en_office_professional_plus_2010_beta_x86_x16-19227.exe</li>
<li>Size: 684.48 (MB)</li>
<li> Date Posted (UTC): 11/16/2009 7:21:23 AM</li>
<li>ISO/CRC: D3ACD2EF</li>
<li>SHA1: F219E1D7FE830DCD6A796FAFEA3A5D0D4662EE89</li>
</ul>
<p>(via <a title="Microsoft Office 2010 beta available on MSDN/TechNet" href="http://www.neowin.net/news/main/09/11/16/microsoft-office-2010-beta-available-on-msdntechnet" target="_blank">Neowin</a>)</p>

<p><a href="http://feedads.g.doubleclick.net/~a/AAuMR028bhN-VOaRTdyu0ZCydjQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/AAuMR028bhN-VOaRTdyu0ZCydjQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AAuMR028bhN-VOaRTdyu0ZCydjQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/AAuMR028bhN-VOaRTdyu0ZCydjQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/AxlmJCrBt8c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2009/11/16/microsoft-office-2010-beta-posted-on-msdntechnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2009/11/16/microsoft-office-2010-beta-posted-on-msdntechnet/</feedburner:origLink></item>
		<item>
		<title>Accessing Custom .NET Assemblies in SSIS 2008 Script Tasks</title>
		<link>http://feeds.ideaexcursion.com/~r/IdeaExcursion/~3/PtU-uPF81_8/</link>
		<comments>http://www.ideaexcursion.com/2009/10/14/accessing-custom-net-assemblies-in-ssis-2008-script-tasks/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 19:36:24 +0000</pubDate>
		<dc:creator>Taylor Gerring</dc:creator>
				<category><![CDATA[SSIS]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[VB.NET]]></category>

		<guid isPermaLink="false">http://www.ideaexcursion.com/?p=1429</guid>
		<description><![CDATA[If you need to access a custom .NET Assembly from an SSIS Script Task, Microsoft doesn't make things very easy - but it's still possible with a little setup.]]></description>
			<content:encoded><![CDATA[<p>If you need to access a custom .NET Assembly from an <abbr title="SQL Server Integration Services">SSIS</abbr> Script Task, Microsoft doesn&#8217;t make things very easy &#8211; but it&#8217;s still possible with a little setup. This is a great way to introduce custom data types or some new functionality without having to replicate that code in a new environment.<br />
<span id="more-1429"></span></p>
<h2>The Setup</h2>
<ul>
<li>Windows 7 64-bit</li>
<li>Visual Studio 2008</li>
<li>SQL Server 2008 64-bit</li>
</ul>
<h2>The Process</h2>
<ol>
<li>Create a signing key (See also, <a title="How to: Create a Public/Private Key Pair" href="http://msdn.microsoft.com/en-us/library/6f05ezxy.aspx " target="_blank">How to: Create a Public/Private Key Pair</a>)
<ol>
<li>Open Visual Studio 2008 command Prompt &#8211; the regular command prompt <em>will not</em> work</li>
<li>Change to a friendly directory: cd %userprofile%\Desktop</li>
<li>Create the key file: sn -k key.snk</li>
</ol>
</li>
<li>Sign the assembly &#8211; There are a few ways to do this, but I found this to be the easiest. If you want to sign it some other way, check out <a title="http://msdn.microsoft.com/en-us/library/xc31ft41.aspx" href="http://msdn.microsoft.com/en-us/library/xc31ft41.aspx" target="_blank">How to: Sign an Assembly with a Strong Name</a>
<ol>
<li>Right-click the Project</li>
<li>Select &#8220;Properties&#8221;</li>
<li>Navigate to the &#8220;Signing&#8221; tab</li>
<li>Browse to strong name key file (which was created in the previous step)</li>
<li>Recompile the project</li>
</ol>
</li>
<li>Copy the re-compiled assembly to your <acronym title="Global Assembly Cache">GAC</acronym>
<ol>
<li>gacutil -i &#8220;C:\Path\to\CustomAssemblyName.dll&#8221;</li>
</ol>
</li>
<li>Copy assembly to &#8220;%programfiles(x86)%\Microsoft SQL Server\100\SDK\Assemblies&#8221;</li>
<li>Add reference in script task. Repeat this for <strong>every </strong>Script Task you want to access this assembly from
<ol>
<li>Right-click References</li>
<li>Click &#8220;Add Reference&#8230;&#8221;
<p><div id="attachment_1437" class="wp-caption alignnone" style="width: 310px"><a rel="attachment wp-att-1437" href="http://www.ideaexcursion.com/2009/10/14/accessing-custom-net-assemblies-in-ssis-2008-script-tasks/add-reference/"><img class="size-medium wp-image-1437" title="Add Reference..." src="http://www.ideaexcursion.com/wp-content/uploads/2009/10/add-reference-300x139.png" alt="Add Reference..." width="300" height="139" /></a><p class="wp-caption-text">Add Reference...</p></div></li>
<li>On the .NET tab, scroll to find your assembly</li>
<li>Press &#8220;OK&#8221;</li>
<li>The Assembly should now appear under the References list</li>
</ol>
</li>
<li> Add a reference to the assembly in code, at the top
<ol>
<li>(C#) Using CustomAssemblyName;</li>
<li> (VB.NET) Imports CustomAssemblyName</li>
</ol>
</li>
<li>You should now have full access to the imported <abbr title="Dynamic Link Library">DLL</abbr></li>
</ol>
<h2>Caveats</h2>
<p>This method works pretty well, but deployment isn&#8217;t exactly seamless &#8211; you&#8217;ll have to repeat this for each server and re-register &amp; copy the <abbr title="Dynamic Link Library">DLL</abbr> separately for any updates. Additionally, there is no way to globally add the assembly reference to the entire project or package. Instead, you&#8217;ll have to repeat step 6 (adding the reference) for every Script Task.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ZUgyIQ3Ur4WtpOG4q7MaNWP4wqU/0/da"><img src="http://feedads.g.doubleclick.net/~a/ZUgyIQ3Ur4WtpOG4q7MaNWP4wqU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZUgyIQ3Ur4WtpOG4q7MaNWP4wqU/1/da"><img src="http://feedads.g.doubleclick.net/~a/ZUgyIQ3Ur4WtpOG4q7MaNWP4wqU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/IdeaExcursion/~4/PtU-uPF81_8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ideaexcursion.com/2009/10/14/accessing-custom-net-assemblies-in-ssis-2008-script-tasks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ideaexcursion.com/2009/10/14/accessing-custom-net-assemblies-in-ssis-2008-script-tasks/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.784 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-30 16:59:58 --><!-- Compression = gzip -->
