<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>freachable.net</title>
    <link>http://freachable.net/</link>
    <description>Next generation's garbage</description>
    <language>en-us</language>
    <copyright>Hafthor Stefansson</copyright>
    <lastBuildDate>Fri, 02 Jul 2010 19:40:58 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>blog@freachable.net</managingEditor>
    <webMaster>blog@freachable.net</webMaster>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=8d67f8b6-b0e2-42c3-b28e-611c342a53f7</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,8d67f8b6-b0e2-42c3-b28e-611c342a53f7.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,8d67f8b6-b0e2-42c3-b28e-611c342a53f7.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8d67f8b6-b0e2-42c3-b28e-611c342a53f7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I wanted rounded corners, but with minimal
fuss. I'm using border-radius and variants (-moz, -webkit, -khtml) which is great,
except for on IE, but I found a DHTML behavior (<a href="http://code.google.com/p/curved-corner/">http://code.google.com/p/curved-corner/</a>)
that makes it so IE will appear to have these powers. The trouble is, I'm using SiteFinity
which, like any good CMS, has these virtual folders that don't exist in IIS and url
references to behaviors must be in the same directory.<br /><br />
To fix this, I wrote a quick HttpHandler to all me to capture requests for htc files
and serve them from any path.<br /><br />
Here's the source:<br /><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">class</span> HtcAnywhereHandler
: IHttpHandler { <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> HtcAnywhereHandler()
{ } <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">bool</span> IsReusable
{ get { <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">return</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">false</span>;
} } <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> ProcessRequest(HttpContext
context) { FileInfo fi <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">new</span> FileInfo(context.Server.MapPath(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"~/htc/"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span> context.Request.Url.Segments[context.Request.Url.Segments.Length <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">-</span> 1])); <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (fi.Exists
&amp;&amp; fi.Extension.Equals(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">".htc"</span>,
System.StringComparison.InvariantCultureIgnoreCase)) { context.Response.ContentType <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"text/x-component"</span>;
context.Response.BinaryWrite(File.ReadAllBytes(fi.FullName)); } <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">else</span> context.Response.StatusCode <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> 404;
} }</span></pre>So now I have an /htc directory where I really store my behavior but
a request to /skljfsfcio/border-radius.htc will serve the /htc/border-radius.htc file.
Yay.<br /><br />
To make this work, you'll need to add an entry to the httpHandlers section in the
web.config<br /><br />
&lt;add verb="GET" path="*.htc" validate="false" type="HtcAnywhereHandler, HtcAnywhere"
/&gt;<br /><br />
Then you need to tell IIS to use ASP.NET for .htc files. Go to the web site properties,
Home Directory tab, [configuration...], add an application extension to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
for .htc, Limit to: "GET", and turn off verify that it exists.<br /><br />
The bummer for me was that in my html that border-radius.htc didn't end up working.
Sigh.<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=8d67f8b6-b0e2-42c3-b28e-611c342a53f7" /></body>
      <title>Using HTC Behaviors in SiteFinity or other ASP.NET CMS</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,8d67f8b6-b0e2-42c3-b28e-611c342a53f7.aspx</guid>
      <link>http://freachable.net/2010/07/02/UsingHTCBehaviorsInSiteFinityOrOtherASPNETCMS.aspx</link>
      <pubDate>Fri, 02 Jul 2010 19:40:58 GMT</pubDate>
      <description>I wanted rounded corners, but with minimal fuss. I'm using border-radius and variants (-moz, -webkit, -khtml) which is great, except for on IE, but I found a DHTML behavior (&lt;a href="http://code.google.com/p/curved-corner/"&gt;http://code.google.com/p/curved-corner/&lt;/a&gt;)
that makes it so IE will appear to have these powers. The trouble is, I'm using SiteFinity
which, like any good CMS, has these virtual folders that don't exist in IIS and url
references to behaviors must be in the same directory.&lt;br&gt;
&lt;br&gt;
To fix this, I wrote a quick HttpHandler to all me to capture requests for htc files
and serve them from any path.&lt;br&gt;
&lt;br&gt;
Here's the source:&lt;br&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; HtcAnywhereHandler
: IHttpHandler { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; HtcAnywhereHandler()
{ } &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;bool&lt;/span&gt; IsReusable
{ get { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;return&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;false&lt;/span&gt;;
} } &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ProcessRequest(HttpContext
context) { FileInfo fi &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; FileInfo(context.Server.MapPath(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"~/htc/"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; context.Request.Url.Segments[context.Request.Url.Segments.Length &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;-&lt;/span&gt; 1])); &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (fi.Exists
&amp;amp;&amp;amp; fi.Extension.Equals(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;".htc"&lt;/span&gt;,
System.StringComparison.InvariantCultureIgnoreCase)) { context.Response.ContentType &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"text/x-component"&lt;/span&gt;;
context.Response.BinaryWrite(File.ReadAllBytes(fi.FullName)); } &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;else&lt;/span&gt; context.Response.StatusCode &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; 404;
} }&lt;/span&gt;&lt;/pre&gt;So now I have an /htc directory where I really store my behavior but
a request to /skljfsfcio/border-radius.htc will serve the /htc/border-radius.htc file.
Yay.&lt;br&gt;
&lt;br&gt;
To make this work, you'll need to add an entry to the httpHandlers section in the
web.config&lt;br&gt;
&lt;br&gt;
&amp;lt;add verb="GET" path="*.htc" validate="false" type="HtcAnywhereHandler, HtcAnywhere"
/&amp;gt;&lt;br&gt;
&lt;br&gt;
Then you need to tell IIS to use ASP.NET for .htc files. Go to the web site properties,
Home Directory tab, [configuration...], add an application extension to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
for .htc, Limit to: "GET", and turn off verify that it exists.&lt;br&gt;
&lt;br&gt;
The bummer for me was that in my html that border-radius.htc didn't end up working.
Sigh.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=8d67f8b6-b0e2-42c3-b28e-611c342a53f7" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,8d67f8b6-b0e2-42c3-b28e-611c342a53f7.aspx</comments>
      <category>.NET</category>
      <category>HTML</category>
      <category>SiteFinity</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=cbcc174d-7746-4ecd-8c98-2fff16d4ab45</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,cbcc174d-7746-4ecd-8c98-2fff16d4ab45.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,cbcc174d-7746-4ecd-8c98-2fff16d4ab45.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=cbcc174d-7746-4ecd-8c98-2fff16d4ab45</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">It's true. I was pretty excited when I
heard about a chance to ride along with Carl Franklin and Richard Campbell of <a href="http://www.dotnetrocks.com">DotNetRocks</a>.
It was a promotion put on by <a href="http://telerik.com">Telerik</a> where one lucky
victim from each city would get to ride in the RV with them to the next city and watch
that show.<br /><br />
Timeline:<br /><ul><li>
Several weeks before - heard about the <a href="http://www.dotnetrocks.com/roadtrip">RoadTrip</a> on
a DotNetRocks episode. Went to the site mentioned, but there wasn't a sign-up form
yet. Set an alarm on my phone to remind me to check the site daily.</li><li>
A couple of weeks before - The form was there. I filled it in. I then told my wife
about it and said that there was a insignificant chance that I might win that. I then
realized that this was going to conflict with <a href="http://www.sqlsaturday.com">SqlSaturday</a> in
Huntington Beach.</li><li>
Monday 4/19 - canceled plans to go to SqlSaturday.</li><li>
Tuesday 4/20 - Beta 2 of a certain smart phone OS broke camera support. Boo. Did take
a pocket camera with, but didn't take many shots with it.<br /></li><li>
Friday 4/23 - went to the DotNetRocks RoadTrip event in Phoenix. Got there right at
6 PM. Chatted with Richard and mentioned how cool I thought the RoadTrip ride-along
was. He said, "You should go." - They were going to pick me up on Saturday. I texted
my wife. I found it rather hard to concentrate during the event.</li><li>
Saturday 4/24 - Carl and Richard drove the RV to my house, around 11 am - crazy -
got onboard and away we went. Bound for Houston, some 1100 miles away. They opted
for driving straight through. Chatted their ears off probably. We jury-rigged the
PA speaker to a MP3 player so we could listen to old episodes of <a href="http://mondays.pwop.com">Mondays</a> on
the drive.<br /><img src="/content/binary/DSC00384s.jpg" /><br /></li><li>
Sunday 4/25 - Pulled in to Houston around 9 am. Around 20 hours with the time difference.
Got a little sleep in the RV and a little more at the hotel after going for a walk.
Later Richard, Tom (driver) and I met up with <a href="http://blogs.msdn.com/zainnab">Zain
Naboulsi</a> (MS Dev Evangelist) for dinner and had some spirited discussions over
a great dinner. Then just hung out with Richard for a couple of hours chatting about
techie nerdy stuff.</li><li>
Monday 4/26 - Met up with <a href="http://diditwith.net/">Dustin Campbell</a> and
had really great sushi with everyone. Totally geeked out with Dustin about languages
and Visual Studio. Then we went to the MS office, setup and they did the show. It
was kinda neat to see them do a second show. Did a <a href="http://www.facebook.com/video/video.php?v=10100263627759734">video</a> interview
with <a href="http://twitter.com/toddanglin">Todd</a> of Telerik about the experience
and we discussed some of the cool stuff in SiteFinity 4.0 CTP. Then we went back to
the hotel. Sadly, the experience was over. Got about 2 hours of sleep then took a
cab to IAH airport and got on my early flight back to PHX.<br /><img src="/content/binary/DSC00385s.jpg" /><br /></li></ul><br />
Really a great time.<br />
Thanks Carl and Richard and Thanks Telerik!<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=cbcc174d-7746-4ecd-8c98-2fff16d4ab45" /></body>
      <title>DotNetRocks RoadTrip!</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,cbcc174d-7746-4ecd-8c98-2fff16d4ab45.aspx</guid>
      <link>http://freachable.net/2010/05/04/DotNetRocksRoadTrip.aspx</link>
      <pubDate>Tue, 04 May 2010 18:04:02 GMT</pubDate>
      <description>It's true. I was pretty excited when I heard about a chance to ride 
along with Carl Franklin and Richard Campbell of &lt;a href="http://www.dotnetrocks.com"&gt;DotNetRocks&lt;/a&gt;.
It was a promotion put on by &lt;a href="http://telerik.com"&gt;Telerik&lt;/a&gt; where one lucky
victim from each city would get to ride in the RV with them to the next city and watch
that show.&lt;br&gt;
&lt;br&gt;
Timeline:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Several weeks before - heard about the &lt;a href="http://www.dotnetrocks.com/roadtrip"&gt;RoadTrip&lt;/a&gt; on
a DotNetRocks episode. Went to the site mentioned, but there wasn't a sign-up form
yet. Set an alarm on my phone to remind me to check the site daily.&lt;/li&gt;
&lt;li&gt;
A couple of weeks before - The form was there. I filled it in. I then told my wife
about it and said that there was a insignificant chance that I might win that. I then
realized that this was going to conflict with &lt;a href="http://www.sqlsaturday.com"&gt;SqlSaturday&lt;/a&gt; in
Huntington Beach.&lt;/li&gt;
&lt;li&gt;
Monday 4/19 - canceled plans to go to SqlSaturday.&lt;/li&gt;
&lt;li&gt;
Tuesday 4/20 - Beta 2 of a certain smart phone OS broke camera support. Boo. Did take
a pocket camera with, but didn't take many shots with it.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Friday 4/23 - went to the DotNetRocks RoadTrip event in Phoenix. Got there right at
6 PM. Chatted with Richard and mentioned how cool I thought the RoadTrip ride-along
was. He said, "You should go." - They were going to pick me up on Saturday. I texted
my wife. I found it rather hard to concentrate during the event.&lt;/li&gt;
&lt;li&gt;
Saturday 4/24 - Carl and Richard drove the RV to my house, around 11 am - crazy -
got onboard and away we went. Bound for Houston, some 1100 miles away. They opted
for driving straight through. Chatted their ears off probably. We jury-rigged the
PA speaker to a MP3 player so we could listen to old episodes of &lt;a href="http://mondays.pwop.com"&gt;Mondays&lt;/a&gt; on
the drive.&lt;br&gt;
&lt;img src="/content/binary/DSC00384s.jpg"&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Sunday 4/25 - Pulled in to Houston around 9 am. Around 20 hours with the time difference.
Got a little sleep in the RV and a little more at the hotel after going for a walk.
Later Richard, Tom (driver) and I met up with &lt;a href="http://blogs.msdn.com/zainnab"&gt;Zain
Naboulsi&lt;/a&gt; (MS Dev Evangelist) for dinner and had some spirited discussions over
a great dinner. Then just hung out with Richard for a couple of hours chatting about
techie nerdy stuff.&lt;/li&gt;
&lt;li&gt;
Monday 4/26 - Met up with &lt;a href="http://diditwith.net/"&gt;Dustin Campbell&lt;/a&gt; and
had really great sushi with everyone. Totally geeked out with Dustin about languages
and Visual Studio. Then we went to the MS office, setup and they did the show. It
was kinda neat to see them do a second show. Did a &lt;a href="http://www.facebook.com/video/video.php?v=10100263627759734"&gt;video&lt;/a&gt; interview
with &lt;a href="http://twitter.com/toddanglin"&gt;Todd&lt;/a&gt; of Telerik about the experience
and we discussed some of the cool stuff in SiteFinity 4.0 CTP. Then we went back to
the hotel. Sadly, the experience was over. Got about 2 hours of sleep then took a
cab to IAH airport and got on my early flight back to PHX.&lt;br&gt;
&lt;img src="/content/binary/DSC00385s.jpg"&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
Really a great time.&lt;br&gt;
Thanks Carl and Richard and Thanks Telerik!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=cbcc174d-7746-4ecd-8c98-2fff16d4ab45" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,cbcc174d-7746-4ecd-8c98-2fff16d4ab45.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=a69512b2-ddd5-452d-828c-6a9720675dd8</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,a69512b2-ddd5-452d-828c-6a9720675dd8.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,a69512b2-ddd5-452d-828c-6a9720675dd8.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a69512b2-ddd5-452d-828c-6a9720675dd8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">While the pundits (no, not me, the other
pundits) argue about whether Apple is trying to protect their delicate users from
the chainsaw gangs of Flash apps or if Adobe is now being beaten like an LAPD cop
killer because of some ancient grudge, I'm thinking that their may be a whole 'nother
reason: It is step one on the road to<b> killing the Mac</b>.<br /><br />
Why kill the Mac? Easy. Jobs can only make money on hardware and a little bit on their
own software, but he wants the 30% on everything like he's getting on the iPhoneOS
side. Can't lock down the Mac and setup an app store on it now, so it must die.<br /><br />
In order to kill the Mac, you'd need to be able to do everything you can do on a Mac
on a iPad (well, except for development -- screw you developers!)<br /><br />
Replace my Mac? Yep. Get iWork on the iPad and a bluetooth keyboard. Oh, you want
a bigger screen and everything. Ok, what about a 15" iPad Pro that folds up like a
laptop with a built-in keyboard and multitouch trackpad/display. MacBook Air-like
dimensions with a full day's battery life. Oh yeah, and you can sync it directly to
your iPhone.<br /><br /><img temp_src="./content/binary/iPad Pro.png" src="./content/binary/iPad%20Pro.png" width="384" height="231" /><br /><br />
What more do you need pointy-haired boss? Pointy-haired boss wants a corporate dashboard
application on his iPad with notifications... pronto!<br /><br />
The one kind of development Apple does want is iPhoneOS development. What if there
was an app available for free in the app store that let you design your UI, kinda
like you do in Interface Builder now, and let you write code. When you're ready to
test, you click build, the code goes up to Apple, is compiled, packaged, signed and
comes back to your iPad ready for you to test and debug. When you are satisfied with
the results, click Publish and your app is in the App Store, ready to be enjoyed by
all fartapp-aficionados.<br /><br />
Ah, but how can that work if you are doing stuff like Corona, MonoTouch or CS5. And
so 3.3.1 had to be changed.<br /><br />
So, specifically, my predictions are:<br />
*<b> iPad Pro</b> - Ives will twist his hands and say that they completely rethought
the portable computer and voila, iPad Pro w/ laptop style and a second touch-display
that acts like a trackpad - the whole package suitable for authoring applications
- at the same time, Steve will declare that they listened to you and now you can own
and use an iPad and iPad Pro without iTunes and you can sync your iPhone to your iPad
Pro.<br />
*<b> iPad XCode</b> - Integrated Development Environment on the iPad Pro for authoring
apps for the appstore. Maybe free, maybe $49. But it won't include a compiler or code-signer.
Your source will go to Apple to be compiled, signed, versioned, scrutinized and approved.<br />
*<b> Mac languish</b> - only minor hardware improvements - Snow Leopard is the last
Mac OS - security problems go unfixed and just become justification for the glorious
iPad Pro. Every move they make will be to reduce the need for people to buy Macs.<br /><br />
The net effect is Steve gets his 30% on everything.<br /><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=a69512b2-ddd5-452d-828c-6a9720675dd8" /></body>
      <title>Crackpot theory on Apple's 3.3.1</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,a69512b2-ddd5-452d-828c-6a9720675dd8.aspx</guid>
      <link>http://freachable.net/2010/04/30/CrackpotTheoryOnApples331.aspx</link>
      <pubDate>Fri, 30 Apr 2010 00:15:38 GMT</pubDate>
      <description>While the pundits (no, not me, the other pundits) argue about whether Apple is trying to protect their delicate users from the chainsaw gangs of Flash apps or if Adobe is now being beaten like an LAPD cop killer because of some ancient grudge, I'm thinking that their may be a whole 'nother reason: It is step one on the road to&lt;b&gt; killing
the Mac&lt;/b&gt;.&lt;br&gt;
&lt;br&gt;
Why kill the Mac? Easy. Jobs can only make money on hardware and a little bit on their
own software, but he wants the 30% on everything like he's getting on the iPhoneOS
side. Can't lock down the Mac and setup an app store on it now, so it must die.&lt;br&gt;
&lt;br&gt;
In order to kill the Mac, you'd need to be able to do everything you can do on a Mac
on a iPad (well, except for development -- screw you developers!)&lt;br&gt;
&lt;br&gt;
Replace my Mac? Yep. Get iWork on the iPad and a bluetooth keyboard. Oh, you want
a bigger screen and everything. Ok, what about a 15" iPad Pro that folds up like a
laptop with a built-in keyboard and multitouch trackpad/display. MacBook Air-like
dimensions with a full day's battery life. Oh yeah, and you can sync it directly to
your iPhone.&lt;br&gt;
&lt;br&gt;
&lt;img temp_src="./content/binary/iPad Pro.png" src="./content/binary/iPad%20Pro.png" width="384" height="231"&gt;
&lt;br&gt;
&lt;br&gt;
What more do you need pointy-haired boss? Pointy-haired boss wants a corporate dashboard
application on his iPad with notifications... pronto!&lt;br&gt;
&lt;br&gt;
The one kind of development Apple does want is iPhoneOS development. What if there
was an app available for free in the app store that let you design your UI, kinda
like you do in Interface Builder now, and let you write code. When you're ready to
test, you click build, the code goes up to Apple, is compiled, packaged, signed and
comes back to your iPad ready for you to test and debug. When you are satisfied with
the results, click Publish and your app is in the App Store, ready to be enjoyed by
all fartapp-aficionados.&lt;br&gt;
&lt;br&gt;
Ah, but how can that work if you are doing stuff like Corona, MonoTouch or CS5. And
so 3.3.1 had to be changed.&lt;br&gt;
&lt;br&gt;
So, specifically, my predictions are:&lt;br&gt;
*&lt;b&gt; iPad Pro&lt;/b&gt; - Ives will twist his hands and say that they completely rethought
the portable computer and voila, iPad Pro w/ laptop style and a second touch-display
that acts like a trackpad - the whole package suitable for authoring applications
- at the same time, Steve will declare that they listened to you and now you can own
and use an iPad and iPad Pro without iTunes and you can sync your iPhone to your iPad
Pro.&lt;br&gt;
*&lt;b&gt; iPad XCode&lt;/b&gt; - Integrated Development Environment on the iPad Pro for authoring
apps for the appstore. Maybe free, maybe $49. But it won't include a compiler or code-signer.
Your source will go to Apple to be compiled, signed, versioned, scrutinized and approved.&lt;br&gt;
*&lt;b&gt; Mac languish&lt;/b&gt; - only minor hardware improvements - Snow Leopard is the last
Mac OS - security problems go unfixed and just become justification for the glorious
iPad Pro. Every move they make will be to reduce the need for people to buy Macs.&lt;br&gt;
&lt;br&gt;
The net effect is Steve gets his 30% on everything.&lt;br&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=a69512b2-ddd5-452d-828c-6a9720675dd8" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,a69512b2-ddd5-452d-828c-6a9720675dd8.aspx</comments>
      <category>Apple</category>
      <category>Security</category>
      <category>tinfoilhat</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=21859f16-e104-4e84-ad38-3a118b1ee8e0</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,21859f16-e104-4e84-ad38-3a118b1ee8e0.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,21859f16-e104-4e84-ad38-3a118b1ee8e0.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=21859f16-e104-4e84-ad38-3a118b1ee8e0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font face="Tahoma">
            <span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">Wanted
a generic way to pass a DataTable as a parameter to SqlCommand as a TVP (Table Value
Parameter). It automatically creates the, IMHO, superfluous User-Defined Table Types.
Here's what I have so far:</span>
          </font>
          <br />
        </p>
        <pre>
          <span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">
            <pre>
              <span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">&lt;Runtime.CompilerServices.Extension()&gt;
_ <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Sub</span> AddTableParameter(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ByVal</span> cmd <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> SqlCommand, <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ByVal</span> n <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">String</span>, <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ByVal</span> dt <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> DataTable) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Static</span> typeXlat <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> Dictionary(Of
System.Type, SqlDbType) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span> typeXlat <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Is</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Nothing</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Then</span> typeXlat <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">New</span> Dictionary(Of
System.Type, SqlDbType) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(Int64),
SqlDbType.BigInt) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(Int32),
SqlDbType.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Int</span>)
typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(Int16),
SqlDbType.SmallInt) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Byte</span>),
SqlDbType.TinyInt) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(SByte),
SqlDbType.TinyInt) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Boolean</span>),
SqlDbType.Bit) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">String</span>),
SqlDbType.VarChar) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Byte</span>()),
SqlDbType.VarBinary) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(DateTime),
SqlDbType.DateTime) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(DateTimeOffset),
SqlDbType.DateTimeOffset) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Char</span>),
SqlDbType.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Char</span>)
typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Single</span>),
SqlDbType.Real) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Double</span>),
SqlDbType.Float) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Decimal</span>),
SqlDbType.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Decimal</span>)
typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(Guid),
SqlDbType.UniqueIdentifier) typeXlat.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">GetType</span>(Xml.XmlDocument),
SqlDbType.Xml) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">'assembly
the typename and spec</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Dim</span> tabletypedef <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">New</span> List(Of <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">String</span>) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Dim</span> parm <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">New</span> SqlParameter(n,
SqlDbType.Structured) parm.Value <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> dt <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">For</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Each</span> c <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> DataColumn <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">In</span> dt.Columns <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Dim</span> s <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> SqlDbType <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> SqlDbType.Variant <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span> typeXlat.ContainsKey(c.DataType) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Then</span> s <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> typeXlat(c.DataType)
tabletypedef.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(c.ColumnName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"
"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span> s.ToString) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Next</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Dim</span> tabledef <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">String</span>.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Join</span>(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">","</span>,
tabletypedef.ToArray) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Dim</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typename</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"autotype_"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span> tabledef
parm.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">TypeName</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"["</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typename</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"]"</span><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">'create
the type if needed</span> Using cmd2 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">New</span> SqlCommand(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"select
count(*) from sys.types where is_table_type=1 and name='"</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typename</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"'"</span>,
cmd.Connection) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span> cmd2.ExecuteScalar() <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> 0 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Then</span> cmd2.CommandText <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"create
type ["</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typename</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"]
as table("</span><span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span> tabledef <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">+</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">")"</span> cmd2.ExecuteNonQuery() <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span> Using <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">'add
the parm referencing the typename</span> cmd.Parameters.<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Add</span>(parm) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Sub</span></span>
            </pre>
            <br />
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">
            </span>
          </span>
        </pre>
        <p>
        </p>
        <img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=21859f16-e104-4e84-ad38-3a118b1ee8e0" />
      </body>
      <title>Not Texturized Vegetable Protein</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,21859f16-e104-4e84-ad38-3a118b1ee8e0.aspx</guid>
      <link>http://freachable.net/2010/03/26/NotTexturizedVegetableProtein.aspx</link>
      <pubDate>Fri, 26 Mar 2010 02:54:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font face="Tahoma"&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Wanted
a generic way to pass a DataTable as a parameter to SqlCommand as a TVP (Table Value
Parameter). It automatically creates the, IMHO, superfluous User-Defined Table Types.
Here's what I have so far:&lt;/span&gt;&lt;/font&gt; 
&lt;br&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;lt;Runtime.CompilerServices.Extension()&amp;gt;
_ &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Sub&lt;/span&gt; AddTableParameter(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ByVal&lt;/span&gt; cmd &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; SqlCommand, &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ByVal&lt;/span&gt; n &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;String&lt;/span&gt;, &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ByVal&lt;/span&gt; dt &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; DataTable) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Static&lt;/span&gt; typeXlat &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; Dictionary(Of
System.Type, SqlDbType) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; typeXlat &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Is&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Nothing&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Then&lt;/span&gt; typeXlat &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;New&lt;/span&gt; Dictionary(Of
System.Type, SqlDbType) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(Int64),
SqlDbType.BigInt) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(Int32),
SqlDbType.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Int&lt;/span&gt;)
typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(Int16),
SqlDbType.SmallInt) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Byte&lt;/span&gt;),
SqlDbType.TinyInt) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(SByte),
SqlDbType.TinyInt) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Boolean&lt;/span&gt;),
SqlDbType.Bit) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;String&lt;/span&gt;),
SqlDbType.VarChar) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Byte&lt;/span&gt;()),
SqlDbType.VarBinary) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(DateTime),
SqlDbType.DateTime) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(DateTimeOffset),
SqlDbType.DateTimeOffset) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Char&lt;/span&gt;),
SqlDbType.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Char&lt;/span&gt;)
typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Single&lt;/span&gt;),
SqlDbType.Real) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Double&lt;/span&gt;),
SqlDbType.Float) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Decimal&lt;/span&gt;),
SqlDbType.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Decimal&lt;/span&gt;)
typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(Guid),
SqlDbType.UniqueIdentifier) typeXlat.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;GetType&lt;/span&gt;(Xml.XmlDocument),
SqlDbType.Xml) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; &lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'assembly
the typename and spec&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Dim&lt;/span&gt; tabletypedef &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;New&lt;/span&gt; List(Of &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;String&lt;/span&gt;) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Dim&lt;/span&gt; parm &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;New&lt;/span&gt; SqlParameter(n,
SqlDbType.Structured) parm.Value &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; dt &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;For&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Each&lt;/span&gt; c &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; DataColumn &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;In&lt;/span&gt; dt.Columns &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Dim&lt;/span&gt; s &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; SqlDbType &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; SqlDbType.Variant &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; typeXlat.ContainsKey(c.DataType) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Then&lt;/span&gt; s &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; typeXlat(c.DataType)
tabletypedef.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(c.ColumnName &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"
"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; s.ToString) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Next&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Dim&lt;/span&gt; tabledef &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;String&lt;/span&gt;.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Join&lt;/span&gt;(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;","&lt;/span&gt;,
tabletypedef.ToArray) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Dim&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typename&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"autotype_"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; tabledef
parm.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;TypeName&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"["&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typename&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"]"&lt;/span&gt; &lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'create
the type if needed&lt;/span&gt; Using cmd2 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;New&lt;/span&gt; SqlCommand(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"select
count(*) from sys.types where is_table_type=1 and name='"&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typename&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"'"&lt;/span&gt;,
cmd.Connection) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; cmd2.ExecuteScalar() &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; 0 &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Then&lt;/span&gt; cmd2.CommandText &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"create
type ["&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typename&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"]
as table("&lt;/span&gt; &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; tabledef &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;+&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;")"&lt;/span&gt; cmd2.ExecuteNonQuery() &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; Using &lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'add
the parm referencing the typename&lt;/span&gt; cmd.Parameters.&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Add&lt;/span&gt;(parm) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=21859f16-e104-4e84-ad38-3a118b1ee8e0" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,21859f16-e104-4e84-ad38-3a118b1ee8e0.aspx</comments>
      <category>.NET</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=ae5d6e29-7906-42ca-a65c-64274907b856</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,ae5d6e29-7906-42ca-a65c-64274907b856.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,ae5d6e29-7906-42ca-a65c-64274907b856.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ae5d6e29-7906-42ca-a65c-64274907b856</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Please, take a moment and read <a href="http://www.brentozar.com/archive/2010/03/plagiarism-inspiration-and-john-dunleavy/">this
article</a> about plagiarism. If you have a blog or twitter account, please link to
the article, not to me. Thanks.<img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=ae5d6e29-7906-42ca-a65c-64274907b856" /></body>
      <title>Plagiarism, Inspiration, and John Dunleavy</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,ae5d6e29-7906-42ca-a65c-64274907b856.aspx</guid>
      <link>http://freachable.net/2010/03/23/PlagiarismInspirationAndJohnDunleavy.aspx</link>
      <pubDate>Tue, 23 Mar 2010 06:11:38 GMT</pubDate>
      <description>Please, take a moment and read 
&lt;a href="http://www.brentozar.com/archive/2010/03/plagiarism-inspiration-and-john-dunleavy/"&gt;this
article&lt;/a&gt; about plagiarism. If you have a blog or twitter account, please link to
the article, not to me. Thanks.&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=ae5d6e29-7906-42ca-a65c-64274907b856" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,ae5d6e29-7906-42ca-a65c-64274907b856.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=1fb8e017-9cf6-484f-96a0-53013e99aa3d</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,1fb8e017-9cf6-484f-96a0-53013e99aa3d.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,1fb8e017-9cf6-484f-96a0-53013e99aa3d.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1fb8e017-9cf6-484f-96a0-53013e99aa3d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">We have a client that has a WSS3 install
with a single site, but wants to start creating sites for each functional group inside
their organization. The bummer was WSS3's search was limited to a single site. Well,
we could just replace it with Search Server 2008 Express, but that runs over SQL Server
2005 Express and is limited to 4GB on the databases so it would be a hassle to manage
when it gets big.<br /><br />
The answer is to use both.<br /><br />
Here's the steps to make a test environment for this from scratch:<br /><ol><li>
Make a virt using Windows 2003 R2 w/ SP2</li><li>
Add web server role<br /></li><li>
Windows Update</li><li>
Install WSS3 w/ SP2 which gets me the Window Internal Database (not limited to 4GB)
for SharePoint content.</li><li>
Let the Configuration Wizard do its magic.</li><li>
Install Search Server 2008 Express</li><li>
Let the Configuration Wizard do its magic again but don't let it replace your WSS3
site - tell it to make a new search site on a random port.</li><li>
Turn on the "Office SharePoint Server Search Web Parts" site collection feature on
the WSS3 site</li><li>
Install SharePoint Designer 2007</li><li>
Open the Search Server site's /results.aspx page</li><li>
Save as to WSS3 site as /results.aspx (with Don't save for the images/css junk)</li><li>
Add a Search Box webpart to the /default.aspx page of your wss3 site setting the "Target
search results page URL" to /result.aspx<br /></li></ol>
To test, I created a subsite and uploaded a sample document to a doc lib there (/inetpub/wwwroot/iisstart.htm)
- let a crawl happen then searched from the root site for the word "Construction".<br /><br />
Now to tune this a little better, you might want to set the memory limits on the two
instances of SQL running on this box now (MICROSOFT##SSEE and OFFICESERVERS). My understanding
is that SQL server is super memory greedy, but the express and WID versions are less
so but they still will probably push at each others memory causing them to drop cache
buffers and page out IIS, ASP.NET and SP core stuff, so better to limit them.<br /><br />
I did this by creating the following text file (sqlconfig.txt):<br /><blockquote>EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE
WITH OVERRIDE<br />
GO<br />
EXEC sys.sp_configure N'max server memory (MB)', N'256' -- &lt;== mod this value to
around 1/4 of installed memory - 1024 max<br />
GO<br />
RECONFIGURE WITH OVERRIDE<br />
GO<br />
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE<br />
GO<br /></blockquote>Then I ran this from the command line:<br /><blockquote>sqlcmd -S localhost\MICROSOFT##SSEE -E -i sqlconfig.txt<br />
sqlcmd -S localhost\OFFICESERVERS -E -i sqlconfig.txt<br /></blockquote><br /><br /><br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=1fb8e017-9cf6-484f-96a0-53013e99aa3d" /></body>
      <title>Add global search to WSS3 using Search Server 2008 Express</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,1fb8e017-9cf6-484f-96a0-53013e99aa3d.aspx</guid>
      <link>http://freachable.net/2010/01/18/AddGlobalSearchToWSS3UsingSearchServer2008Express.aspx</link>
      <pubDate>Mon, 18 Jan 2010 18:18:53 GMT</pubDate>
      <description>We have a client that has a WSS3 install with a single site, but wants to start creating sites for each functional group inside their organization. The bummer was WSS3's search was limited to a single site. Well, we could just replace it with Search Server 2008 Express, but that runs over SQL Server 2005 Express and is limited to 4GB on the databases so it would be a hassle to manage when it gets big.&lt;br&gt;
&lt;br&gt;
The answer is to use both.&lt;br&gt;
&lt;br&gt;
Here's the steps to make a test environment for this from scratch:&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Make a virt using Windows 2003 R2 w/ SP2&lt;/li&gt;
&lt;li&gt;
Add web server role&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Windows Update&lt;/li&gt;
&lt;li&gt;
Install WSS3 w/ SP2 which gets me the Window Internal Database (not limited to 4GB)
for SharePoint content.&lt;/li&gt;
&lt;li&gt;
Let the Configuration Wizard do its magic.&lt;/li&gt;
&lt;li&gt;
Install Search Server 2008 Express&lt;/li&gt;
&lt;li&gt;
Let the Configuration Wizard do its magic again but don't let it replace your WSS3
site - tell it to make a new search site on a random port.&lt;/li&gt;
&lt;li&gt;
Turn on the "Office SharePoint Server Search Web Parts" site collection feature on
the WSS3 site&lt;/li&gt;
&lt;li&gt;
Install SharePoint Designer 2007&lt;/li&gt;
&lt;li&gt;
Open the Search Server site's /results.aspx page&lt;/li&gt;
&lt;li&gt;
Save as to WSS3 site as /results.aspx (with Don't save for the images/css junk)&lt;/li&gt;
&lt;li&gt;
Add a Search Box webpart to the /default.aspx page of your wss3 site setting the "Target
search results page URL" to /result.aspx&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
To test, I created a subsite and uploaded a sample document to a doc lib there (/inetpub/wwwroot/iisstart.htm)
- let a crawl happen then searched from the root site for the word "Construction".&lt;br&gt;
&lt;br&gt;
Now to tune this a little better, you might want to set the memory limits on the two
instances of SQL running on this box now (MICROSOFT##SSEE and OFFICESERVERS). My understanding
is that SQL server is super memory greedy, but the express and WID versions are less
so but they still will probably push at each others memory causing them to drop cache
buffers and page out IIS, ASP.NET and SP core stuff, so better to limit them.&lt;br&gt;
&lt;br&gt;
I did this by creating the following text file (sqlconfig.txt):&lt;br&gt;
&lt;blockquote&gt;EXEC sys.sp_configure N'show advanced options', N'1'&amp;nbsp; RECONFIGURE
WITH OVERRIDE&lt;br&gt;
GO&lt;br&gt;
EXEC sys.sp_configure N'max server memory (MB)', N'256' -- &amp;lt;== mod this value to
around 1/4 of installed memory - 1024 max&lt;br&gt;
GO&lt;br&gt;
RECONFIGURE WITH OVERRIDE&lt;br&gt;
GO&lt;br&gt;
EXEC sys.sp_configure N'show advanced options', N'0'&amp;nbsp; RECONFIGURE WITH OVERRIDE&lt;br&gt;
GO&lt;br&gt;
&lt;/blockquote&gt;Then I ran this from the command line:&lt;br&gt;
&lt;blockquote&gt;sqlcmd -S localhost\MICROSOFT##SSEE -E -i sqlconfig.txt&lt;br&gt;
sqlcmd -S localhost\OFFICESERVERS -E -i sqlconfig.txt&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=1fb8e017-9cf6-484f-96a0-53013e99aa3d" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,1fb8e017-9cf6-484f-96a0-53013e99aa3d.aspx</comments>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=453a46fd-3285-411b-b7d8-386c1eee6033</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,453a46fd-3285-411b-b7d8-386c1eee6033.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,453a46fd-3285-411b-b7d8-386c1eee6033.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=453a46fd-3285-411b-b7d8-386c1eee6033</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">There appears to be a bug in how Visual
Studio does "Add Service Reference" proxy generation for VB.NET projects.<br /><br />
I ran into this issue when trying to add a service reference to Bing Maps and I believe
it is not limited to that. I think it stems from it misunderstanding that enum instance
variables cannot be tested for equality using .Equals in VB... not sure why.<br /><br />
I think the solution is to simply replace the offending line:<br /><blockquote><font color="#0000ff">If <u>Me</u></font><u>.<i>enumfield</i>.Equals(value)</u> &lt;&gt; <font color="#0000ff">true
Then</font><br /></blockquote>with<br /><blockquote><font color="#0000ff">If Not Object<font color="#000000">.Equals(</font>Me</font>.<i>enumfield</i> ,Value) <font color="#0000ff">Then</font><br /></blockquote><br />
BTW: DO NOT compare boolean results to <font color="#0000ff">True </font>or <font color="#0000ff">False </font>as
they have done!<br /><br />
Use<br /><blockquote><font color="#0000ff">If </font><i>boolean_results</i><font color="#0000ff">Then</font><br /></blockquote>or<br /><blockquote><font color="#0000ff">If Not</font><i>boolean_results</i><font color="#0000ff">Then</font><br /></blockquote>[EDIT 2010-07-07]<br />
Specifically, this block of code is wrong:<br /><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">&lt;System.Runtime.Serialization.DataMemberAttribute()&gt;
_<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Property</span> CompareOperator() <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> SearchService.CompareOperator<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Get</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Return</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Get</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Set</span><br /><span style="background-color: rgb(255, 255, 204);"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField.Equals(value)
&lt;&gt; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">true</span>) <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Then</span></span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> value<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.RaisePropertyChanged(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"CompareOperator"</span>)<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Set</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Property</span></span></pre>and
should be replaced with this:<br /><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">&lt;System.Runtime.Serialization.DataMemberAttribute()&gt;
_<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Property</span> CompareOperator() <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">As</span> SearchService.CompareOperator<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Get</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Return</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Get</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Set</span><br /><span style="background-color: rgb(255, 255, 204);"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If
Not Object</span>.Equals(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField,value)<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"></span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Then</span></span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.CompareOperatorField <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> value<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Me</span>.RaisePropertyChanged(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"CompareOperator"</span>)<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">If</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Set</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">End</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">Property</span></span></pre>Made
this edit so search engines would pick it up... so I can find my own fix next time
I run into it. :) [/EDIT]<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=453a46fd-3285-411b-b7d8-386c1eee6033" /></body>
      <title>Bug in Visual Studio 2008 Add Service Reference for VB.NET</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,453a46fd-3285-411b-b7d8-386c1eee6033.aspx</guid>
      <link>http://freachable.net/2009/11/13/BugInVisualStudio2008AddServiceReferenceForVBNET.aspx</link>
      <pubDate>Fri, 13 Nov 2009 23:41:25 GMT</pubDate>
      <description>There appears to be a bug in how Visual Studio does "Add Service Reference" proxy generation for VB.NET projects.&lt;br&gt;
&lt;br&gt;
I ran into this issue when trying to add a service reference to Bing Maps and I believe
it is not limited to that. I think it stems from it misunderstanding that enum instance
variables cannot be tested for equality using .Equals in VB... not sure why.&lt;br&gt;
&lt;br&gt;
I think the solution is to simply replace the offending line:&lt;br&gt;
&lt;blockquote&gt;&lt;font color="#0000ff"&gt;If &lt;u&gt;Me&lt;/u&gt;&lt;/font&gt;&lt;u&gt;.&lt;i&gt;enumfield&lt;/i&gt;.Equals(value)&lt;/u&gt; &amp;lt;&amp;gt; &lt;font color="#0000ff"&gt;true
Then&lt;/font&gt;
&lt;br&gt;
&lt;/blockquote&gt;with&lt;br&gt;
&lt;blockquote&gt;&lt;font color="#0000ff"&gt;If Not Object&lt;font color="#000000"&gt;.Equals(&lt;/font&gt;Me&lt;/font&gt;.&lt;i&gt;enumfield&lt;/i&gt; ,Value) &lt;font color="#0000ff"&gt;Then&lt;/font&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
BTW: DO NOT compare boolean results to &lt;font color="#0000ff"&gt;True &lt;/font&gt;or &lt;font color="#0000ff"&gt;False &lt;/font&gt;as
they have done!&lt;br&gt;
&lt;br&gt;
Use&lt;br&gt;
&lt;blockquote&gt;&lt;font color="#0000ff"&gt;If &lt;/font&gt;&lt;i&gt;boolean_results&lt;/i&gt; &lt;font color="#0000ff"&gt;Then&lt;/font&gt;
&lt;br&gt;
&lt;/blockquote&gt;or&lt;br&gt;
&lt;blockquote&gt;&lt;font color="#0000ff"&gt;If Not&lt;/font&gt; &lt;i&gt;boolean_results&lt;/i&gt; &lt;font color="#0000ff"&gt;Then&lt;/font&gt;
&lt;br&gt;
&lt;/blockquote&gt;[EDIT 2010-07-07]&lt;br&gt;
Specifically, this block of code is wrong:&lt;br&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;lt;System.Runtime.Serialization.DataMemberAttribute()&amp;gt;
_&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Property&lt;/span&gt; CompareOperator() &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; SearchService.CompareOperator&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Get&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Return&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Get&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Set&lt;/span&gt;
&lt;br&gt;
&lt;span style="background-color: rgb(255, 255, 204);"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField.Equals(value)
&amp;lt;&amp;gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;true&lt;/span&gt;) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Then&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; value&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.RaisePropertyChanged(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"CompareOperator"&lt;/span&gt;)&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Set&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;and
should be replaced with this:&lt;br&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;lt;System.Runtime.Serialization.DataMemberAttribute()&amp;gt;
_&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Property&lt;/span&gt; CompareOperator() &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;As&lt;/span&gt; SearchService.CompareOperator&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Get&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Return&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Get&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Set&lt;/span&gt;
&lt;br&gt;
&lt;span style="background-color: rgb(255, 255, 204);"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If
Not Object&lt;/span&gt;.Equals(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField,value)&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Then&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.CompareOperatorField &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; value&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Me&lt;/span&gt;.RaisePropertyChanged(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"CompareOperator"&lt;/span&gt;)&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;If&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Set&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;End&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Made
this edit so search engines would pick it up... so I can find my own fix next time
I run into it. :) [/EDIT]&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=453a46fd-3285-411b-b7d8-386c1eee6033" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,453a46fd-3285-411b-b7d8-386c1eee6033.aspx</comments>
      <category>.NET Internals</category>
      <category>Bing Maps</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=81445717-f038-4a59-a30b-a22d2eb75dac</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,81445717-f038-4a59-a30b-a22d2eb75dac.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,81445717-f038-4a59-a30b-a22d2eb75dac.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=81445717-f038-4a59-a30b-a22d2eb75dac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm actually going to encourage you to
consider using GC methods. Well, now hang on cowboys... this is for pretty limited
circumstances.<br /><br />
You see, the GC class can do more than compact memory. It can also run finalizers
on unreferenced objects. If you are writing a class that included a finalizer (which
you would only need if your class is the lowest-level class to deal with an unmanaged
resource or are managing a pool of scarce resources) then you might consider using
GC. Even though you might (read should) implement IDisposable, if a user of your library
fails to Dispose your object, that unmanaged resource will leak until, at some non-deterministic
(read random) point, the garbage collector runs and that object's finalizer might
(read random) be queued and run. If it leaks often enough, your attempt to create
additional objects with the unmanaged resource could fail because you have exhausted
the available supply.<br /><br />
Rather than fail, you could attempt:<br /><b><br />
 GC.Collect(0); 
<br />
 GC.WaitForPendingFinalizers(); 
<br /></b><br />
and try again. If it works on the retry, you might want to log that for the developer's
information. One might argue that this is just encouraging and forgiving sloppiness,
but I look at it as a step towards robustness and can actually help the developer
diagnose a real problem whereas not doing this would just lead to more random run-time
only-on-heavy-load failures.<br /><br />
If you wanted to be really awesome, once you detect that you could recover, flip a
bit on to start recording a stacktrace on each create, then in your finalizer, put
that stacktrace in a application-wide queue that then gets logged by the next create.
Now you've told the dev exactly where to go find the spot where they got your object
but didn't dispose it.<br /><br />
Another place is when you are calling something that has an unmanaged resource behind
it along with other code that isn't behaving. For example, you are writing a web part
in SharePoint that is calling new SPSite and OpenWeb... perhaps you are being a good
SPRequest citizen, but another web part on the site that you didn't write isn't being
so nice.<br /><br />
You could make auto-recovery wrappers for the stuff you use. Your newSPSite method
would attempt to return new SPSite but if that should fail, Collect + WFPF and try
again. Ugh, what a pain. But sometimes it beats trying to explain to someone why it
is another webpart's fault that your webpart explodes.<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=81445717-f038-4a59-a30b-a22d2eb75dac" /></body>
      <title>GC.Heresy</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,81445717-f038-4a59-a30b-a22d2eb75dac.aspx</guid>
      <link>http://freachable.net/2009/10/20/GCHeresy.aspx</link>
      <pubDate>Tue, 20 Oct 2009 04:40:14 GMT</pubDate>
      <description>I'm actually going to encourage you to consider using GC methods. Well, now hang on cowboys... this is for pretty limited circumstances.&lt;br&gt;
&lt;br&gt;
You see, the GC class can do more than compact memory. It can also run finalizers
on unreferenced objects. If you are writing a class that included a finalizer (which
you would only need if your class is the lowest-level class to deal with an unmanaged
resource or are managing a pool of scarce resources) then you might consider using
GC. Even though you might (read should) implement IDisposable, if a user of your library
fails to Dispose your object, that unmanaged resource will leak until, at some non-deterministic
(read random) point, the garbage collector runs and that object's finalizer might
(read random) be queued and run. If it leaks often enough, your attempt to create
additional objects with the unmanaged resource could fail because you have exhausted
the available supply.&lt;br&gt;
&lt;br&gt;
Rather than fail, you could attempt:&lt;br&gt;
&lt;b&gt;
&lt;br&gt;
&amp;nbsp;GC.Collect(0); 
&lt;br&gt;
&amp;nbsp;GC.WaitForPendingFinalizers(); 
&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
and try again. If it works on the retry, you might want to log that for the developer's
information. One might argue that this is just encouraging and forgiving sloppiness,
but I look at it as a step towards robustness and can actually help the developer
diagnose a real problem whereas not doing this would just lead to more random run-time
only-on-heavy-load failures.&lt;br&gt;
&lt;br&gt;
If you wanted to be really awesome, once you detect that you could recover, flip a
bit on to start recording a stacktrace on each create, then in your finalizer, put
that stacktrace in a application-wide queue that then gets logged by the next create.
Now you've told the dev exactly where to go find the spot where they got your object
but didn't dispose it.&lt;br&gt;
&lt;br&gt;
Another place is when you are calling something that has an unmanaged resource behind
it along with other code that isn't behaving. For example, you are writing a web part
in SharePoint that is calling new SPSite and OpenWeb... perhaps you are being a good
SPRequest citizen, but another web part on the site that you didn't write isn't being
so nice.&lt;br&gt;
&lt;br&gt;
You could make auto-recovery wrappers for the stuff you use. Your newSPSite method
would attempt to return new SPSite but if that should fail, Collect + WFPF and try
again. Ugh, what a pain. But sometimes it beats trying to explain to someone why it
is another webpart's fault that your webpart explodes.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=81445717-f038-4a59-a30b-a22d2eb75dac" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,81445717-f038-4a59-a30b-a22d2eb75dac.aspx</comments>
      <category>.NET Internals</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=099571fd-5bad-404c-9a74-f74cd1a1d4d0</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,099571fd-5bad-404c-9a74-f74cd1a1d4d0.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,099571fd-5bad-404c-9a74-f74cd1a1d4d0.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=099571fd-5bad-404c-9a74-f74cd1a1d4d0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Disclaimer: I'm a Ruby-n00b and just trying
merb.<br /><br />
Did you get this after trying to<br /><b>gem install merb</b><br />
?<br /><br />
...<br />
Successfully installed merb-1.0.12<br />
44 gems installed<br />
Installing ri documentation for diff-lcs-1.1.2...<br />
Installing ri documentation for rspec-1.2.9...<br />
Installing ri documentation for addressable-2.0.2...<br />
Installing ri documentation for data_objects-0.9.12...<br />
Installing ri documentation for dm-core-0.9.11...<br />
Installing ri documentation for dm-migrations-0.9.11...<br />
Installing ri documentation for json_pure-1.1.9...<br />
Installing ri documentation for mime-types-1.16...<br />
Installing ri documentation for thor-0.11.7...<br />
Installing ri documentation for merb-core-1.0.12...<br />
Installing ri documentation for merb_datamapper-1.0.12...<br />
Installing ri documentation for ZenTest-4.1.4...<br />
Installing ri documentation for RubyInline-3.8.3...<br />
Installing ri documentation for ParseTree-3.0.4...<br />
Installing ri documentation for merb-action-args-1.0.12...<br />
Installing ri documentation for merb-assets-1.0.12...<br />
Installing ri documentation for merb-slices-1.0.12...<br />
ERROR:  While executing gem ... (Errno::EINVAL)<br />
    Invalid argument - ./&lt;/cdesc-&lt;.yaml<br /><br />
Not sure why that is, but it won't stop merb from working. I went ahead a made a for
loop to install the other gems again so they'd get their ri documentation.<br /><br /><b>for %x in (merb-auth-more merb-auth-slice-password merb-auth merb-cache merb-exceptions
highline templater merb-gen haml merb-haml merb-helpers mailfactory merb-mailer merb-param-protection
merb-more do_sqlite3 dm-timestamps dm-types dm-aggregates dm-validations randexp dm-sweatshop
dm-serializer) do gem install %x</b><br /><br />
Here's what comes from <b>gem install merb-slices -V --debug</b><br /><br />
ERROR:  While executing gem ... (Errno::EINVAL)<br />
    Invalid argument - ./&lt;/cdesc-&lt;.yaml<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`initialize'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`open'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`add_class'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:226:in
`update_or_replace'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:89:in
`generate_class_info'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:44:in
`process_class'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:39:in
`generate'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:38:in
`each'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:38:in
`generate'<br />
        C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb:324:in
`document'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:177:in
`run_rdoc'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:149:in
`install_ri'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:109:in
`generate_ri'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:144:in
`execute'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:143:in
`each'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:143:in
`execute'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command.rb:257:in
`invoke'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:132:in
`process_args'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in
`run'<br />
        C:/ruby/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in
`run'<br />
        C:/Ruby/bin/gem:21<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=099571fd-5bad-404c-9a74-f74cd1a1d4d0" /></body>
      <title>gem install merb on Windows yields ri documentation failure</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,099571fd-5bad-404c-9a74-f74cd1a1d4d0.aspx</guid>
      <link>http://freachable.net/2009/10/17/gemInstallMerbOnWindowsYieldsRiDocumentationFailure.aspx</link>
      <pubDate>Sat, 17 Oct 2009 18:35:46 GMT</pubDate>
      <description>Disclaimer: I'm a Ruby-n00b and just trying merb.&lt;br&gt;
&lt;br&gt;
Did you get this after trying to&lt;br&gt;
&lt;b&gt;gem install merb&lt;/b&gt;
&lt;br&gt;
?&lt;br&gt;
&lt;br&gt;
...&lt;br&gt;
Successfully installed merb-1.0.12&lt;br&gt;
44 gems installed&lt;br&gt;
Installing ri documentation for diff-lcs-1.1.2...&lt;br&gt;
Installing ri documentation for rspec-1.2.9...&lt;br&gt;
Installing ri documentation for addressable-2.0.2...&lt;br&gt;
Installing ri documentation for data_objects-0.9.12...&lt;br&gt;
Installing ri documentation for dm-core-0.9.11...&lt;br&gt;
Installing ri documentation for dm-migrations-0.9.11...&lt;br&gt;
Installing ri documentation for json_pure-1.1.9...&lt;br&gt;
Installing ri documentation for mime-types-1.16...&lt;br&gt;
Installing ri documentation for thor-0.11.7...&lt;br&gt;
Installing ri documentation for merb-core-1.0.12...&lt;br&gt;
Installing ri documentation for merb_datamapper-1.0.12...&lt;br&gt;
Installing ri documentation for ZenTest-4.1.4...&lt;br&gt;
Installing ri documentation for RubyInline-3.8.3...&lt;br&gt;
Installing ri documentation for ParseTree-3.0.4...&lt;br&gt;
Installing ri documentation for merb-action-args-1.0.12...&lt;br&gt;
Installing ri documentation for merb-assets-1.0.12...&lt;br&gt;
Installing ri documentation for merb-slices-1.0.12...&lt;br&gt;
ERROR:&amp;nbsp; While executing gem ... (Errno::EINVAL)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Invalid argument - ./&amp;lt;/cdesc-&amp;lt;.yaml&lt;br&gt;
&lt;br&gt;
Not sure why that is, but it won't stop merb from working. I went ahead a made a for
loop to install the other gems again so they'd get their ri documentation.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;for %x in (merb-auth-more merb-auth-slice-password merb-auth merb-cache merb-exceptions
highline templater merb-gen haml merb-haml merb-helpers mailfactory merb-mailer merb-param-protection
merb-more do_sqlite3 dm-timestamps dm-types dm-aggregates dm-validations randexp dm-sweatshop
dm-serializer) do gem install %x&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Here's what comes from &lt;b&gt;gem install merb-slices -V --debug&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
ERROR:&amp;nbsp; While executing gem ... (Errno::EINVAL)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Invalid argument - ./&amp;lt;/cdesc-&amp;lt;.yaml&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`initialize'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`open'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb:41:in
`add_class'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:226:in
`update_or_replace'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:89:in
`generate_class_info'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:44:in
`process_class'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:39:in
`generate'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:38:in
`each'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb:38:in
`generate'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/gems/1.8/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb:324:in
`document'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:177:in
`run_rdoc'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:149:in
`install_ri'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:109:in
`generate_ri'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:144:in
`execute'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:143:in
`each'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:143:in
`execute'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command.rb:257:in
`invoke'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:132:in
`process_args'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in
`run'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/ruby/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in
`run'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:/Ruby/bin/gem:21&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=099571fd-5bad-404c-9a74-f74cd1a1d4d0" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,099571fd-5bad-404c-9a74-f74cd1a1d4d0.aspx</comments>
      <category>merb</category>
      <category>ruby</category>
    </item>
    <item>
      <trackback:ping>http://freachable.net/Trackback.aspx?guid=9bb2ed0b-cc0b-4889-a172-83f97aeddabe</trackback:ping>
      <pingback:server>http://freachable.net/pingback.aspx</pingback:server>
      <pingback:target>http://freachable.net/PermaLink,guid,9bb2ed0b-cc0b-4889-a172-83f97aeddabe.aspx</pingback:target>
      <dc:creator>Hafthor Stefansson</dc:creator>
      <wfw:comment>http://freachable.net/CommentView,guid,9bb2ed0b-cc0b-4889-a172-83f97aeddabe.aspx</wfw:comment>
      <wfw:commentRss>http://freachable.net/SyndicationService.asmx/GetEntryCommentsRss?guid=9bb2ed0b-cc0b-4889-a172-83f97aeddabe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Got the BlackBerry VS9 Plugin running in
Visual Studio 2008 running in Windows 7 x64.<br />
Not sure what of these steps are really necessary, but this is what I did:<br /><br />
Copied "Research In Motion" directory from "Program Files (x86)" to "Program Files".
This gave me a different error.<br /><br />
Discovered using SysInternal's ProcMon that it was trying to launch RIM.Net.Tools.ScriptHost.exe
from the root, so I copied that and all the other stuff in the plugin's bin folder
to the root, yes, C:\.<br /><br />
That gave me another error, so then I set VS2008 to run in XP SP3 compatibility mode.<br /><br />
Tada!<br /><p></p><img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=9bb2ed0b-cc0b-4889-a172-83f97aeddabe" /></body>
      <title>BlackBerry VS9 Plugin - Windows 7 x64</title>
      <guid isPermaLink="false">http://freachable.net/PermaLink,guid,9bb2ed0b-cc0b-4889-a172-83f97aeddabe.aspx</guid>
      <link>http://freachable.net/2009/10/05/BlackBerryVS9PluginWindows7X64.aspx</link>
      <pubDate>Mon, 05 Oct 2009 22:09:27 GMT</pubDate>
      <description>Got the BlackBerry VS9 Plugin running in Visual Studio 2008 running in Windows 7 x64.&lt;br&gt;
Not sure what of these steps are really necessary, but this is what I did:&lt;br&gt;
&lt;br&gt;
Copied "Research In Motion" directory from "Program Files (x86)" to "Program Files".
This gave me a different error.&lt;br&gt;
&lt;br&gt;
Discovered using SysInternal's ProcMon that it was trying to launch RIM.Net.Tools.ScriptHost.exe
from the root, so I copied that and all the other stuff in the plugin's bin folder
to the root, yes, C:\.&lt;br&gt;
&lt;br&gt;
That gave me another error, so then I set VS2008 to run in XP SP3 compatibility mode.&lt;br&gt;
&lt;br&gt;
Tada!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://freachable.net/aggbug.ashx?id=9bb2ed0b-cc0b-4889-a172-83f97aeddabe" /&gt;</description>
      <comments>http://freachable.net/CommentView,guid,9bb2ed0b-cc0b-4889-a172-83f97aeddabe.aspx</comments>
      <category>Visual Studio</category>
      <category>Windows 7</category>
    </item>
  </channel>
</rss>