<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mikeadmire.com</title>
	<atom:link href="http://mikeadmire.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikeadmire.com</link>
	<description>Just Another Internet Guy</description>
	<lastBuildDate>Fri, 04 May 2012 18:07:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Reboot</title>
		<link>http://mikeadmire.com/reboot/</link>
		<comments>http://mikeadmire.com/reboot/#comments</comments>
		<pubDate>Wed, 02 May 2012 00:33:53 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://mikeadmire.com/?p=4</guid>
		<description><![CDATA[I moved my site to a new server with the new Ubuntu LTS release.  For some reason I decided to do this while out of town at a conference, which turned out to be a really bad idea.  50%+ packet loss and frequent loss of Internet connectivity turned it into a multi-day project.  I&#8217;m happy [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I moved my site to a new server with the new Ubuntu LTS release.  For some reason I decided to do this while out of town at a conference, which turned out to be a really bad idea.  50%+ packet loss and frequent loss of Internet connectivity turned it into a multi-day project.  I&#8217;m happy to say that the process has been completed and everything should be back to normal.</p>
<p>I apologize for the inconvenience.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/reboot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postgresql on Mac OS X Lion</title>
		<link>http://mikeadmire.com/postgresql-on-mac-os-x-lion/</link>
		<comments>http://mikeadmire.com/postgresql-on-mac-os-x-lion/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 15:27:35 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=84</guid>
		<description><![CDATA[Here is a quick note about something I&#8217;ve run into when installing Postgresql on Mac OS X Lion.  I use Homebrew to install Postgres, but when trying to enter commands like createdb or createuser I was getting an error asking me to verify that the server was running locally and accepting connections on the Unix [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here is a quick note about something I&#8217;ve run into when installing <a title="Postgresql" href="http://www.postgresql.org/" target="_blank">Postgresql</a> on Mac OS X Lion.  I use <a title="Homebrew" href="http://mxcl.github.com/homebrew/" target="_blank">Homebrew</a> to install Postgres, but when trying to enter commands like createdb or createuser I was getting an error asking me to verify that the server was running locally and accepting connections on the Unix domain socket.</p>
<p>There are binaries for Postgres in /usr/bin that are NOT from the install. I resolved this by opening /etc/paths and moving /usr/bin to be after /usr/local/bin. Once that change was made and I opened a new terminal I no longer had any of the previous issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/postgresql-on-mac-os-x-lion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check Your Apache Banner</title>
		<link>http://mikeadmire.com/check-your-apache-banner/</link>
		<comments>http://mikeadmire.com/check-your-apache-banner/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 22:49:55 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=80</guid>
		<description><![CDATA[Pull your web server headers sometime and see if you are giving out too much information. curl -LI http://your.webserver.here From a security perspective, giving out information about the version number of the web server, the underlying operating system, and the application software version isn&#8217;t the best idea. A couple things you can do to remedy [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Pull your web server headers sometime and see if you are giving out too much information.</p>
<pre>curl -LI http://your.webserver.here</pre>
<p>From a security perspective, giving out information about the version number of the web server, the underlying operating system, and the application software version isn&#8217;t the best idea. A couple things you can do to remedy this on Apache:</p>
<p>Set <a title="ServerTokens" href="http://httpd.apache.org/docs/2.2/mod/core.html#servertokens" target="_blank">ServerTokens</a> to Prod in the apache.conf (/etc/apache2/conf.d/security on Ubuntu 10.4)</p>
<pre>ServerTokens Prod</pre>
<p>This removes the Apache version and any information about the operating system. It will show that it is Apache, but that is it.</p>
<p>If you are running PHP you should also edit the php.ini file (/etc/php5/apache2/php.ini on Ubuntu 10.4). Make sure that expose_php is set to off.</p>
<pre>expose_php off</pre>
<p>Those two changes will make sure your Apache server isn&#8217;t announcing what version it is, what OS it&#8217;s running on, and which version of PHP it&#8217;s running.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/check-your-apache-banner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unix Find Xargs And No Such File Or Directory</title>
		<link>http://mikeadmire.com/unix-find-xargs-and-no-such-file-or-directory/</link>
		<comments>http://mikeadmire.com/unix-find-xargs-and-no-such-file-or-directory/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 06:00:27 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=14</guid>
		<description><![CDATA[A useful command that I frequently use when looking for a particular string in a file is a find command piped to xargs grep. For example, if I am looking for the word Mike in any file inside of /usr/local I will type: [code] find /usr/local -type f &#124; xargs grep Mike [/code] This says [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<p>A useful command that I frequently use when looking for a particular  string in a file is a find command piped to xargs grep. For example, if I  am looking for the word Mike in any file inside of /usr/local I will  type:<br />
[code]<br />
find /usr/local -type f | xargs grep Mike<br />
[/code]<br />
This says to start in the directory of /usr/local and search recursively  for anything that is a file. Then pass that file to grep to search  inside the file for the text Mike. There is one problem with this  though. It doesn&#8217;t handle spaces in file names. When it comes across a  file name with a space you will usually see something like:<br />
[code]<br />
grep: /Someplace/Somewhere: No such file or directory<br />
[/code]<br />
This can be confusing since you would assume that find actually found  something to pass to grep. It is misleading though, as the problem  actually has to do with a white space character in the file name or  directory. It is very common to see spaces on Linux and Mac OS X  systems, so it is important to learn to work around this problem. The  solution is pretty simple. Both GNU find and xargs support a zero option  that displays white space as a NUL character.<br />
[code]<br />
find /usr/local -type f -print0 | xargs -0 grep Mike<br />
[/code]<br />
This should take care of the white space issues.  I hope this helps.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/unix-find-xargs-and-no-such-file-or-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Query Soap Service Using Ruby</title>
		<link>http://mikeadmire.com/query-soap-service-using-ruby/</link>
		<comments>http://mikeadmire.com/query-soap-service-using-ruby/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 06:00:26 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=23</guid>
		<description><![CDATA[OK, to get this out of the way. I know SOAP isn&#8217;t cool. However, there may still be times when you need to query data from a SOAP web service. This is an attempt to document the process of retrieving and working with that data. In this example I will describe how to query the [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<p>OK, to get this out of the way. I know SOAP isn&#8217;t cool. However, there may still be times when you need to query data from a SOAP web service. This is an attempt to document the process of retrieving and working with that data.</p>
<p>In this example I will describe how to query the WSDL to get a list of methods and parameters, and use that to submit the method call. I will be calling a web service method called &#8216;webMethod&#8217; that accepts one parameter called &#8216;publishDate&#8217;. If you don&#8217;t already know this information about the web service you are communicating with, there is a free tool called SoapUI that works pretty well. It&#8217;s written in Java, so you should be able to get it to work on about any platform.</p>
<p>Depending on the version of Ruby you are running, the first thing that may be required is to install soap4r:<br />
[code]<br />
gem install soap4r<br />
[/code]<br />
Next is to set the location of the WSDL file on the web server, set the encoding, and instantiate the driver:<br />
[code]<br />
require 'soap/wsdlDriver'<br />
wsdl = 'http://server/WebService.asmx?WSDL'<br />
driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver<br />
XSD::Charset.encoding = 'UTF8'<br />
[/code]<br />
This next line will create two logs in the directory of the process called devLog_webMethod_response.xml and devLog_webMethod_request.xml that will show the raw request and response each time the process is called. In place of webMethod will be the actual method name of the web service being called. This can be commented out when the application is moved to production.<br />
[code]<br />
driver.wiredump_file_base = "devLog"<br />
[/code]<br />
Now it&#8217;s time to retrieve the data:<br />
[code]<br />
@response = driver.webMethod(:publishDate =&gt; '2008-09-01')<br />
[/code]<br />
At this point @response contains the XML response from the web service. In order to retrieve the data we will need to know a little bit about the structure of the XML. We can find out this information by opening the log file created by the previous step. Let&#8217;s open devLog_webMethod_response.xml:<br />
[code]<br />
&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br />
&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;<br />
&lt;soap:Body&gt;<br />
&lt;WebMethodResponse xmlns="WebMethod"&gt;<br />
&lt;WebMethodResult&gt;<br />
&lt;Article&gt;<br />
&lt;Name&gt;Example 1&lt;/Name&gt;<br />
&lt;Headline&gt;Poor Excuse For An Article&lt;/Headline&gt;<br />
&lt;Body&gt;Nothing to see here, move along please.&lt;/Body&gt;<br />
&lt;/Article&gt;<br />
&lt;Article&gt;<br />
&lt;Name&gt;Example 2&lt;/Name&gt;<br />
&lt;Headline&gt;Woot! I Made Headlines&lt;/Headline&gt;<br />
&lt;Body&gt;Yeah, OK. Another poorly written example article.&lt;/Body&gt;<br />
&lt;/Article&gt;<br />
&lt;/WebMethodResult&gt;<br />
&lt;/WebMethodResponse&gt;<br />
&lt;/soap:Body&gt;<br />
&lt;/soap:Envelope&gt;<br />
[/code]<br />
OK, so here we have two articles that contain the data we are after and they are both inside the WebMethodResult tags. So to access those bits we might do something like:<br />
[code]<br />
@response.webMethodResult.article.each do |article|<br />
puts article["Name"]<br />
puts article["Headline"]<br />
puts article["Body"]<br />
end<br />
[/code]<br />
That works great as long as there is always more than one article. If, on the other hand, there is only one article in the result, it is no longer an array and the .each method will fail. So to get around this we can move our logic to a method and then test the article first to see which way we should handle it. So the previous code might be rewritten as:<br />
[code]<br />
def print_article(article)<br />
puts article["Name"]<br />
puts article["Headline"]<br />
puts article["Body"]<br />
end</p>
<p>if(@response.webMethodResult.article.is_a?(Array))<br />
@response.webMethodResult.article.each do |article|<br />
print_article(article)<br />
end<br />
else<br />
print_article(@response.webMethodResult.article)<br />
end<br />
[/code]<br />
If you are asked to do some work with SOAP based web services, hopefully this makes it a little easier to get up and running.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/query-soap-service-using-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE 7 And Word Wrap</title>
		<link>http://mikeadmire.com/ie-7-and-word-wrap/</link>
		<comments>http://mikeadmire.com/ie-7-and-word-wrap/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 06:00:16 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=25</guid>
		<description><![CDATA[I guess this is what I get for doing most of my testing in Firefox. I created an aspx page to be opened in a javascript window.open to allow a customer to preview some rendered HTML. I used labels in the aspx page and then populate those with data returned from a database. Everything looked [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<p>I guess this is what I get for doing most of my testing in Firefox. I created an aspx page to be opened in a javascript window.open to allow a customer to preview some rendered HTML. I used labels in the aspx page and then populate those with data returned from a database. Everything looked great in Firefox, but when I checked it in Internet Explorer, there was no word wrapping. Each line ran off the page. After some research I found a CSS property called word-wrap. The property is part of the CSS3 draft and is used to force word wrapping. Since this is a simple page that is opened in a pop-up window, I was able to fix the problem by simply adding the following to the CSS style.<br />
[code]<br />
body {<br />
  word-wrap: break-word;<br />
}<br />
[/code]<br />
If I understand the CSS3 draft correctly, this should actually force a word wrap even if it occurs in the middle of a word. However, in testing with both Firefox and IE 7, this is not the case. It breaks at the end of the word.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/ie-7-and-word-wrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby.Exe Unable To Locate Component Readline.Dll</title>
		<link>http://mikeadmire.com/ruby-exe-unable-to-locate-component-readline-dll/</link>
		<comments>http://mikeadmire.com/ruby-exe-unable-to-locate-component-readline-dll/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 06:00:50 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=27</guid>
		<description><![CDATA[I just installed ruby 1.8.7 on a Windows machine and when I started IRB I got this error: [code] ruby.exe Unable To Locate Component readline.dll [/code] The fix: Download the readline binary zip from here. Unzip the file. Change directory to the new directory created by unzipping the file. Change directory to the bin directory. [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<div id="post_body_6">
<p>I just installed ruby 1.8.7 on a Windows machine and when I started IRB I got this error:<br />
[code]<br />
ruby.exe Unable To Locate Component readline.dll<br />
[/code]<br />
The fix:</p>
<ol>
<li>Download the readline binary zip from <a href="http://gnuwin32.sourceforge.net/downlinks/readline-bin-zip.php">here</a>.</li>
<li>Unzip the file.</li>
<li>Change directory to the new directory created by unzipping the file.</li>
<li>Change directory to the bin directory.</li>
<li>Copy the readline5.dll file.</li>
<li>Change directory to your ruby/bin directory (for me this is C:\ruby\bin).</li>
<li>Paste readline5.dll file there.</li>
<li>Rename file readline.dll.</li>
</ol>
<p>As long as your rubybin directory is set in your PATH environment variable, that should take care of the problem.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/ruby-exe-unable-to-locate-component-readline-dll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby On Rails Development Environment On Ubuntu Linux 8.04.1</title>
		<link>http://mikeadmire.com/ruby-on-rails-development-environment-on-ubuntu-linux-8-04-1/</link>
		<comments>http://mikeadmire.com/ruby-on-rails-development-environment-on-ubuntu-linux-8-04-1/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 06:00:05 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=30</guid>
		<description><![CDATA[I just went through the process of setting up a new Linux desktop for Rails development. In an effort to keep it short and to the point, I&#8217;ve trimmed up some of the info that I found useful from wiki.rubyonrails.org. This is just a basic development stack. I plan to write another post on the [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<div id="post_body_7">
<p>I just went through the process of setting up a new Linux desktop for Rails development. In an effort to keep it short and to the point, I&#8217;ve trimmed up some of the info that I found useful from wiki.rubyonrails.org. This is just a basic development stack. I plan to write another post on the editors that I&#8217;ve tried and what I&#8217;ve found to work best for me so far. Anyway, let&#8217;s get started. I tend to work primarily at a command prompt, so that&#8217;s the method I&#8217;ve described here. Open a terminal window and follow along:<br />
[code]<br />
sudo apt-get install ruby rdoc libyaml-ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential<br />
[/code]<br />
You don&#8217;t want to install the rubygems package from the Ubuntu repository. It is consistently out of date, so you will need to pull the tarball down from RubyForge:<br />
[code]<br />
wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz</p>
<p>tar xvzf rubygems-1.2.0.tgz</p>
<p>cd rubygems-1.2.0</p>
<p>sudo ruby setup.rb<br />
[/code]<br />
At least with the versions I&#8217;ve installed, I had to create a symbolic link to gem1.8:<br />
[code]<br />
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem<br />
[/code]<br />
You should now be able to do a gem update:<br />
[code]<br />
sudo gem update --system<br />
[/code]<br />
And install Rails:<br />
[code]<br />
sudo gem install rails<br />
[/code]<br />
Now it&#8217;s time to take care of the database installation:<br />
[code]<br />
sudo apt-get install mysql-server libsqlite3-0 libsqlite3-dev</p>
<p>sudo gem install mysql sqlite3-ruby<br />
[/code]<br />
If you want to install RMagick:<br />
[code]<br />
sudo apt-get install imagemagick libmagick9-dev</p>
<p>sudo gem install rmagick<br />
[/code]<br />
That should do it.  Now go have some fun!</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/ruby-on-rails-development-environment-on-ubuntu-linux-8-04-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Change The Default Editor In Debian And Ubuntu</title>
		<link>http://mikeadmire.com/how-to-change-the-default-editor-in-debian-and-ubuntu/</link>
		<comments>http://mikeadmire.com/how-to-change-the-default-editor-in-debian-and-ubuntu/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 06:00:56 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=33</guid>
		<description><![CDATA[I&#8217;ve been a fan of Ubuntu Linux since I first started using it a few years ago. One of the first things I do when building a new Ubuntu machine is set the default editor to Vim. I have been using Vi for a long time and the keyboard shortcuts are very natural for me, [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<div id="post_body_2">
<p>I&#8217;ve been a fan of Ubuntu Linux since I first started using it a few years ago.  One of the first things I do when building a new Ubuntu machine is set the default editor to Vim.  I have been using Vi for a long time and the keyboard shortcuts are very natural for me, so the first time I typed a command like visudo or crontab -e and got the Nano editor, I was shocked.  With Ubuntu 8.04 it&#8217;s really very easy:</p>
<p>Open a terminal window (Applications/Accessories/Terminal) Type: sudo apt-get install vim-full</p>
<p>That should do it.  By default only the vim.tiny package is installed and installing the vim package (apt-get install vim) only gets you vim.basic.  Both of those will leave the default editor as Nano.  Installing the vim-full package will take care of modifying the default editor for you to be vim.gnome.  If you would like to change the setting to something else, or that didn&#8217;t work with the version of Debian or Ubuntu that you have, try:<br />
[code]<br />
sudo /usr/sbin/update-alternatives --config editor<br />
[/code]<br />
Then pick the number that corresponds with your choice.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/how-to-change-the-default-editor-in-debian-and-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grouping In Linq</title>
		<link>http://mikeadmire.com/grouping-in-linq/</link>
		<comments>http://mikeadmire.com/grouping-in-linq/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 06:00:08 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<guid isPermaLink="false">http://mikeadmire.com/?p=35</guid>
		<description><![CDATA[I&#8217;ve been using LINQ for my data access piece in .NET for the last few months and I thought I would write a quick post on how I&#8217;ve found to do grouping. I&#8217;ve seen some examples where a &#8216;group by new&#8217; is done with a list several fields to group by. I&#8217;ve also seen similar [...]]]></description>
			<content:encoded><![CDATA[<p></p><div>
<div id="post_body_13">
<p>I&#8217;ve been using LINQ for my data access piece in .NET for the last few months and I thought I would write a quick post on how I&#8217;ve found to do grouping. I&#8217;ve seen some examples where a &#8216;group by new&#8217; is done with a list several fields to group by. I&#8217;ve also seen similar examples in SQL, but this is often times not what is wanted. In SQL it generally requires a join to a second query that has the grouping field and any aggregates that are needed. In LINQ, a way that I&#8217;ve found to work for me is something like this:<br />
[code]<br />
var q = from invoice in context.Invoices<br />
    where invoice.ManifestDate &gt;= startDate &amp;&amp; invoice.ManifestDate &lt;= endDate<br />
    group invoice by invoice.PoNumber into g<br />
    select new {<br />
      PoNumber = g.Key,<br />
      g.First().InvoiceNumber,<br />
      g.First().ManifestDate,<br />
      ShippingCharge = g.Sum(p =&gt; p.ShippingCharge),<br />
      ProductCharge = g.Sum(p =&gt; p.Quantity * p.NetPrice),<br />
      g.First().CreateDate<br />
    }<br />
[/code]<br />
This allows me to group only by PoNumber in this example and calculate aggregates on ShippingCharge and ProductCharge from the group. In this example this is only going to use the first value found in the group for the value returned, which is an acceptable solution for me in this scenario. In SQL this might look something like:<br />
[code]<br />
SELECT DISTINCT<br />
    inv.PoNumber,<br />
    inv.InvoiceNumber,<br />
    inv.ManifestDate,<br />
    g.ShippingCharge,<br />
    g.ProductCharge,<br />
    inv.CreateDate<br />
  FROM Invoice inv<br />
  JOIN (<br />
    SELECT<br />
      PoNumber,<br />
      SUM(Quantity * NetPrice) as ProductCharge,<br />
      SUM(ShippingCharge) as ShippingCharge<br />
    FROM Invoice<br />
    GROUP BY PoNumber) g<br />
  ON inv.PoNumber = g.PoNumber<br />
[/code]
</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikeadmire.com/grouping-in-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

