<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Georged Weblog</title><subtitle type="html">Have you georged your mind?</subtitle><id>http://weblogs.asp.net/doubinski/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/doubinski/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2003-07-03T15:45:00Z</updated><entry><title>Now it WON'T run differently under debugger</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2005/03/17/394948.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2005/03/17/394948.aspx</id><published>2005-03-17T00:43:00Z</published><updated>2005-03-17T00:43:00Z</updated><content type="html">&lt;div&gt;&lt;a href="http://www.hanselman.com"&gt;&lt;font face="Tahoma"&gt;Scott Hanselman&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma"&gt;&amp;nbsp;has &lt;a href="http://www.hanselman.com/blog/YesItWILLRunDifferentlyUnderTheDebugger.aspx"&gt;blogged&lt;/a&gt; recently about our experience with nasty tricks Visual Studio debugger can play on you. Turns out, it's possible to run and debug normally without resorting to a secondary thread spin-off. But there is a price to pay: remote debugging for web services must be disabled. Add this to your app.config:&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;configuration&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;system.diagnostics&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;switches&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;add&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="Remote.Disable"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;value&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="1"&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;switches&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;system.diagnostics&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font face="Tahoma"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;configuration&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Tahoma" color="#000000" size="3"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Tahoma" color="#000000" size="3"&gt;Sweet.&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=394948" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term=".Nyet" scheme="http://weblogs.asp.net/doubinski/archive/tags/.Nyet/default.aspx" /></entry><entry><title>NT Backup reloaded</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2004/07/28/199518.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2004/07/28/199518.aspx</id><published>2004-07-28T12:20:00Z</published><updated>2004-07-28T12:20:00Z</updated><content type="html">&lt;P&gt;I already&amp;nbsp;mused about NT Backup &lt;A href="http://weblogs.asp.net/doubinski/archive/2003/06/10/8457.aspx"&gt;before&lt;/A&gt;. Since then things started to go a bit sideways in terms of reliability of disk backups immediately&amp;nbsp;followed by Exchange 2003 backup. For some reason media manager refused to recognise that disk backup has finished and Exchange dump was consistently failing. Poking around yielded the following update to the batch (set names are now &lt;STRONG&gt;really&lt;/STRONG&gt; nice :-).&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;@echo off&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem get date into a vairable so we can create good media name&lt;BR&gt;rem for /F "usebackq delims=" %%i IN (`date /t`) DO set dt="%%ibackup media"&lt;BR&gt;&amp;nbsp; for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l&lt;BR&gt;&amp;nbsp; for /f "Tokens=1" %%i in ('time /t') do set tm=-%%i&lt;BR&gt;&amp;nbsp; set tm=%tm::=-%&lt;BR&gt;&amp;nbsp; set dtt=%dt%%tm%&lt;BR&gt;@echo ---------------------------------------- &amp;gt; report.txt&lt;BR&gt;@echo Backup job started %dtt% &amp;gt;&amp;gt; report.txt &lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem Set folder name containing backup log files&lt;BR&gt;set fld=C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;@echo net stop "Removable Storage" &amp;gt;&amp;gt; report.txt&lt;BR&gt;net stop "Removable Storage" &amp;gt;&amp;gt; report.txt&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;rem refresh media (is that why backup is failing?!)&lt;BR&gt;@echo rsm.exe refresh /LF"HP C1537A SCSI Sequential Device" &amp;gt;&amp;gt; report.txt&lt;BR&gt;start /wait rsm.exe refresh /LF"HP C1537A SCSI Sequential Device" &amp;gt;&amp;gt; report.txt&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;sleep 30&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem Perform Files backup&lt;BR&gt;@echo C:\WINNT\system32\ntbackup.exe backup "@C:\admin\files.bks" /N "%dtt%" /D "File daily %dtt%" /v:yes /r:no /rs:no /hc:on /m normal /J "File daily %dtt%" /l:s /P "4mm DDS" /UM &amp;gt;&amp;gt; report.txt&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;C:\WINNT\system32\ntbackup.exe backup "@C:\admin\files.bks" /N "%dtt%" /D "File daily %dtt%" /v:yes /r:no /rs:no /hc:on /m normal /J "File daily %dtt%" /l:s /P "4mm DDS" /UM&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem This dir command will list all log files sorted by date in bare format&lt;BR&gt;set fcmd=dir "%fld%*.log" /OD /A-D /B&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem set command will set lastf variable to the last file in set, i.e. the latest one&lt;BR&gt;for /F "tokens=* delims= " %%i in ('%fcmd%') do set lastf=%fld%%%i&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;type "%lastf%" &amp;gt;&amp;gt; report.txt&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;sleep 120&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;rem refresh media (is that why backup is failing?!)&lt;BR&gt;@echo rsm.exe refresh /LF"HP C1537A SCSI Sequential Device" &amp;gt;&amp;gt; report.txt&lt;BR&gt;start /wait rsm.exe refresh /LF"HP C1537A SCSI Sequential Device" &amp;gt;&amp;gt; report.txt&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;sleep 120&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem Perform Exchange backup&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;BR&gt;@echo C:\WINNT\system32\ntbackup.exe backup "@C:\admin\exchange.bks" /A /T %dtt% /D "Exchange Daily %dtt%" /V:yes /R:yes /RS:no /HC:on /M normal /J "Exchange Daily %dtt%" /L:s &amp;gt;&amp;gt; report.txt&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;C:\WINNT\system32\ntbackup.exe backup "@C:\admin\exchange.bks" /A /T %dtt% /D "Exchange Daily %dtt%" /V:yes /R:yes /RS:no /HC:on /M normal /J "Exchange Daily %dtt%" /L:s&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem This dir command will list all log files sorted by date in bare format&lt;BR&gt;set fcmd=dir "%fld%*.log" /OD /A-D /B&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem set command will set lastf variable to the last file in set, i.e. the latest one&lt;BR&gt;for /F "tokens=* delims= " %%i in ('%fcmd%') do set lastf=%fld%%%i&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;type "%lastf%" &amp;gt;&amp;gt; report.txt&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;sleep 120&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;rem eject media&lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;BR&gt;@echo rsm.exe eject /PF"%dtt% - 1" /astart &amp;gt;&amp;gt; report.txt &lt;BR&gt;@echo ---------------------------------------- &amp;gt;&amp;gt; report.txt &lt;BR&gt;start /wait rsm.exe eject /PF"%dtt% - 1" /astart &amp;gt;&amp;gt; report.txt &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;sleep 30&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;c:\admin\blat report.txt -t&amp;nbsp;&lt;/FONT&gt;&lt;A href="mailto:youraddress@yourdomain.com"&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;youraddress@yourdomain.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt; -s "Backup Report" -mime -server&amp;nbsp;yoursmtpserver -f "&lt;/FONT&gt;&lt;A href="mailto:backup@yourdomain.com"&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;backup@yourdomain.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;" -q&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Rem Cleanup&lt;BR&gt;set fld=&lt;BR&gt;set fcmd=&lt;BR&gt;set lastf=&lt;BR&gt;set dt=&lt;BR&gt;set tm=&lt;BR&gt;set dtt=&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=199518" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term="General" scheme="http://weblogs.asp.net/doubinski/archive/tags/General/default.aspx" /></entry><entry><title>And execution continues</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2004/03/09/86490.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2004/03/09/86490.aspx</id><published>2004-03-09T11:57:00Z</published><updated>2004-03-09T11:57:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;Nothing&amp;nbsp;makes our life more interesting than ASP.NET behaviour at debugger termination. This is a short version of&amp;nbsp;three lost hours: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;Create an empty page and add the following code&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;CODE&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;private &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Page_Load(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt; sender, System.EventArgs e)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;const&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; CONNECT_STRING = "server=(local);uid=sa;pwd=password;database=msdb;persist security info=True";&lt;BR&gt;&amp;nbsp;&amp;nbsp; SqlConnection con = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; SqlConnection(CONNECT_STRING);&lt;BR&gt;&amp;nbsp;&amp;nbsp; con.Open();&lt;BR&gt;&amp;nbsp;&amp;nbsp; SqlTransaction tran = con.BeginTransaction();&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; try&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; SqlCommand("create table temptable(id int)", con, tran).ExecuteNonQuery();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tran.Commit();&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;catch&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tran.Rollback();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;throw&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;finally&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;/CODE&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;Add breakpoint at &amp;#8220;new SqlCommand&amp;#8220; line and hit F5&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;When debugger stopped at breakpoint hit Shift-F5. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;And here is trace from SQL Profiler:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION&lt;BR&gt;go&lt;BR&gt;create table temptable(id int)&lt;BR&gt;go&lt;BR&gt;COMMIT TRANSACTION&lt;BR&gt;go&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN class=750314011-09032004&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;Seems that&amp;nbsp;ASP.NET is entitled to do whatever it wants at debugger termination including successful execution of the entire program.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;SPAN class=750314011-09032004&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;NOT &lt;/STRONG&gt;sweet.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=86490" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term=".Nyet" scheme="http://weblogs.asp.net/doubinski/archive/tags/.Nyet/default.aspx" /></entry><entry><title>Books upgrade</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/11/30/40316.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/11/30/40316.aspx</id><published>2003-11-29T15:55:00Z</published><updated>2003-11-29T15:55:00Z</updated><content type="html">&lt;P align=left&gt;I was looking at &lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0596004877/002-5663347-6574465"&gt;Programming ASP.NET, Second Edition&lt;/A&gt; on Amazon and suddenly the question came up:&lt;/P&gt;
&lt;P align=left&gt;Why do we always expect software vendors to offer upgrades for their products but no one expects that for books? Is there some economical rationale I'm missing? How cool would it be to walk into a bookstore holding the first edition and to hear "Oh, yes, sir, this mighty book you've got in your hands qualifies you for an upgrade discount of 40%".&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=40316" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term="General" scheme="http://weblogs.asp.net/doubinski/archive/tags/General/default.aspx" /></entry><entry><title>XmlPleaseIgnore</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/11/06/36079.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/11/06/36079.aspx</id><published>2003-11-06T02:05:00Z</published><updated>2003-11-06T02:05:00Z</updated><content type="html">&lt;P&gt;&lt;FONT size=2&gt;There is a handy class &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemuribuilderclasstopic.asp"&gt;UriBuilder&lt;/A&gt; which, unlike &lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemuriclasstopic.asp"&gt;Uri&lt;/A&gt;, allows full read-write access to all the components of Uri. However, problems started&amp;nbsp;when I tried to serialise it using XmlSerializer. The following code:&lt;/FONT&gt;&lt;/P&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;STYLE type=text/css&gt;
.csharpcode
{
 font-size: 10pt;
 color: black;
 font-family: Courier New , Courier, Monospace;
 background-color: #ffffff;
 /*white-space: pre;*/
}
.csharpcode pre { margin: 0px; }
.rem { color: #008000; }
.kwrd { color: #0000ff; }
.str { color: #006080; }
.op { color: #0000c0; }
.preproc { color: #cc6633; }
.asp { background-color: #ffff00; }
.html { color: #800000; }
.attr { color: #ff0000; }
.alt 
{
 background-color: #f4f4f4;
 width: 100%;
 margin: 0px;
}
.lnum { color: #606060; }
&lt;/STYLE&gt;
&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml.Serialization;
&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; XmlPleaseIgnore
{
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; Main()
    {
        UriBuilder b = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; UriBuilder(&lt;SPAN class=str&gt;"http"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"localhost"&lt;/SPAN&gt;, 80, &lt;SPAN class=str&gt;"/test/default.aspx"&lt;/SPAN&gt;);
        XmlSerializer x = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlSerializer(b.GetType());
        x.Serialize(Console.Out, b);
    }
}&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size=2&gt;quickly produced this:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT size=2&gt;Unhandled Exception: System.InvalidOperationException: There was an error reflecting type 'System.UriBuilder'. ---&amp;gt; System.InvalidOperationException: System.Uri cannot be serialized because it does not have a default public constructor.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT size=2&gt;A bit of digging revealed that &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemuribuilderclasstopic.asp"&gt;UriBuilder.Serialize&lt;/A&gt;&amp;nbsp;method&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT size=2&gt;...converts the public fields and read/write properties of an object into XML. It does not convert methods, indexers, private fields, or read-only properties. To serialize all of an object's fields and properties, both public and private, use the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemruntimeserializationformattersbinarybinaryformatterclasstopic.asp"&gt;&lt;FONT color=#002c99 size=2&gt;BinaryFormatter&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT size=2&gt;And, of course, Uri property of UriBuilder is read-only property and, to make the matter worse, it does not have public default constructor. If it were my class I would apply XmlIgnore attribute to the member and that would do the trick. As I found, with a bit of code it can be done for external classes as well:&lt;/FONT&gt;&lt;/P&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml;
&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Xml.Serialization;
&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; XmlPleaseIgnore
{
    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; Main()
    {
        &lt;SPAN class=rem&gt;// add XmlIgnore attribute and attach it to Uri member of UriBuilder class&lt;/SPAN&gt;
        XmlAttributes attrs = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlAttributes();
        attrs.XmlIgnore = &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
        XmlAttributeOverrides over = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlAttributeOverrides();
        over.Add( &lt;SPAN class=kwrd&gt;typeof&lt;/SPAN&gt;(UriBuilder), &lt;SPAN class=str&gt;"Uri"&lt;/SPAN&gt;, attrs);
        
        UriBuilder b = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; UriBuilder(&lt;SPAN class=str&gt;"http"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"localhost"&lt;/SPAN&gt;, 80, &lt;SPAN class=str&gt;"/test/default.aspx"&lt;/SPAN&gt;);
        XmlSerializer x = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; XmlSerializer(b.GetType(), over); &lt;SPAN class=rem&gt;// override attributes&lt;/SPAN&gt;
        x.Serialize(Console.Out, b);
    }
}&lt;/PRE&gt;&lt;PRE class=csharpcode&gt;And here is the output:&lt;/PRE&gt;&lt;PRE class=csharpcode&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN class=m&gt;&lt;?&lt;/SPAN&gt;&lt;SPAN class=pi&gt;xml version="1.0" encoding="utf-8" &lt;/SPAN&gt;&lt;SPAN class=m&gt;?&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;UriBuilder&lt;BR&gt;   &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=ns&gt;&lt;FONT color=#ff0000&gt;xmlns:xsd&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;="&lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.w3.org/2001/XMLSchema"&gt;&lt;STRONG&gt;http://www.w3.org/2001/XMLSchema&lt;/STRONG&gt;&lt;/A&gt;&lt;FONT color=#0000ff&gt;"&lt;/FONT&gt;&lt;SPAN class=m&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=ns&gt;&lt;FONT color=#ff0000&gt;   xmlns:xsi&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;="&lt;/FONT&gt;&lt;/SPAN&gt;&lt;B class=ns&gt;&lt;FONT color=#ff0000&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/FONT&gt;&lt;/B&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN class=m&gt;"&lt;/SPAN&gt;&lt;SPAN class=m&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;   &amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Fragment&lt;/FONT&gt;&lt;/SPAN&gt; &lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;      &amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Host&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=tx&gt;&lt;STRONG&gt;localhost&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&lt;/&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Host&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;      &amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Password&lt;/FONT&gt;&lt;/SPAN&gt; &lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;BR&gt;      &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Path&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=tx&gt;&lt;STRONG&gt;/test/default.aspx&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&lt;/&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Path&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;      &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Port&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=tx&gt;&lt;STRONG&gt;80&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&lt;/&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Port&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;      &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Query&lt;/FONT&gt;&lt;/SPAN&gt; &lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;FONT color=#000000&gt;&lt;BR&gt;      &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Scheme&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=tx&gt;&lt;STRONG&gt;http&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&lt;/&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;Scheme&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;      &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;UserName&lt;/FONT&gt;&lt;/SPAN&gt; &lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;/&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&lt;/&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=t&gt;&lt;FONT color=#990000&gt;&lt;/URIBUILDER&lt; FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=m&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&lt;FONT size=2&gt;Note that attribute is applied to a member of a class and therefore I can also serialise my own classes which have UriBuilder as a member variable.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Sweet.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=36079" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term=".Nyet" scheme="http://weblogs.asp.net/doubinski/archive/tags/.Nyet/default.aspx" /></entry><entry><title>"Static" variables in SQL</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/10/16/32187.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/10/16/32187.aspx</id><published>2003-10-16T12:29:00Z</published><updated>2003-10-16T12:29:00Z</updated><content type="html">&lt;P&gt;I did not realise that declared variables in SQL are effectively &amp;#8220;static&amp;#8221; when used in rowsets.&amp;nbsp;That is, the following code:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;create table roles(role nvarchar(50))&lt;BR&gt;GO&lt;BR&gt;insert roles &lt;BR&gt;select 'Administrator' union&lt;BR&gt;select 'Editor' union&lt;BR&gt;select 'User'&lt;BR&gt;go&lt;/P&gt;
&lt;P&gt;declare @roles nvarchar(1024)&lt;BR&gt;select @roles = isnull(@roles + ', ', '') + role from roles&lt;BR&gt;select @roles&lt;BR&gt;go&lt;/P&gt;
&lt;P&gt;drop table roles&lt;BR&gt;go&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;yeilds &amp;#8220;Administrator, Editor, User&amp;#8220;. &lt;/P&gt;
&lt;P dir=ltr&gt;Wow! Now instead of returning rowset of roles for a user and then concatenating results in client-side code, I can just write a function similar to:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;create function fnGetUserRoleVerbose(@userid int, @delim nvarchar(2) = ', ')&lt;BR&gt;returns nvarchar(1024)&lt;BR&gt;as&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp;&amp;nbsp; declare @role nvarchar(1024)&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; select &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @role = isnull(@role + @delim, '') + roles.name&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; from &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; users &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join users_roles &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on users.id = userid &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inner join roles &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on roleid = roles.id&lt;BR&gt;&amp;nbsp;&amp;nbsp; where &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; users.id = @userid&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; return @role&lt;BR&gt;end&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;and then just do this:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;string&amp;nbsp;roles = (string) SqlHelper.ExecuteScalar(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myConnectionString,&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CommandType.Text, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string.Format("select dbo.fnGetUserRoleVerbose({0}, default)", userId));&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=32187" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term="SQL" scheme="http://weblogs.asp.net/doubinski/archive/tags/SQL/default.aspx" /></entry><entry><title>Googless?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/10/14/31860.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/10/14/31860.aspx</id><published>2003-10-14T06:06:00Z</published><updated>2003-10-14T06:06:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;Could not google this morning... Dig deeper...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;C:\&amp;gt;nslookup &lt;A title=http://www.google.com/ href="http://www.google.com/"&gt;www.google.com&lt;/A&gt; ns1.google.com&lt;BR&gt;Server:&amp;nbsp; ns1.google.com&lt;BR&gt;Address:&amp;nbsp; 216.239.32.10&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;*** ns1.google.com can't find &lt;A title=http://www.google.com/ href="http://www.google.com/"&gt;www.google.com&lt;/A&gt;: Non-existent domain&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;I... can... work... without... Google... Must... continue... Try local brew...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;C:\&amp;gt;nslookup &lt;A title=http://www.google.com.au/ href="http://www.google.com.au/"&gt;www.google.com.au&lt;/A&gt; ns1.google.com&lt;BR&gt;Server:&amp;nbsp; ns1.google.com&lt;BR&gt;Address:&amp;nbsp; 216.239.32.10&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;Non-authoritative answer:&lt;BR&gt;Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A title=http://www.google.akadns.net/ href="http://www.google.akadns.net/"&gt;www.google.akadns.net&lt;/A&gt;&lt;BR&gt;Address:&amp;nbsp; 216.239.53.99&lt;BR&gt;Aliases:&amp;nbsp; &lt;A title=http://www.google.com.au/ href="http://www.google.com.au/"&gt;www.google.com.au&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;Phew! Must be Anti-Oz conspiracy!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=31860" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author><category term="General" scheme="http://weblogs.asp.net/doubinski/archive/tags/General/default.aspx" /></entry><entry><title>Be positive</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/07/08/9796.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/07/08/9796.aspx</id><published>2003-07-08T04:22:00Z</published><updated>2003-07-08T04:22:00Z</updated><content type="html">&lt;p&gt;&lt;span class="193171704-08072003"&gt;Was driving to the customer site in a really bad mood but one of the billboards made me laugh all the way: &lt;a href="http://www.mbf.com.au"&gt;MBF&lt;/a&gt; - Australian health fund/private health insurer has a new motto: "BE POSITIVE". Way to go, PR boneheads! That's &lt;em&gt;exactly&lt;/em&gt; what I don't want to be when it comes to my health :-)&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9796" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author></entry><entry><title>Make it three days from now</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/07/04/9688.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/07/04/9688.aspx</id><published>2003-07-04T03:05:00Z</published><updated>2003-07-04T03:05:00Z</updated><content type="html">&lt;p&gt;&lt;span class="418035602-04072003"&gt;Did you know that in date fields in Outlook (Task, Appointment forms) you can type things like "tomorrow", "yesterday", "week from now", "in 2 days", "two weeks ago", "next year". Even "Christmas", "Boxing Day", "New Years Day", "Halloween", &lt;!--StartFragment --&gt; "&lt;span style="; FONT-FAMILY: Arial"&gt;Cinco de Mayo"&lt;/span&gt; and "Independence day" work (though "Queens Birthday" and "tonight" do not :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="418035602-04072003"&gt;Very handy when your client says "lets talk again in three days" - saves you figuring out what date it's going to be in case you've been on a coding roll for 20 hours straight and lost track of time.&lt;/span&gt; &lt;span class="418035602-04072003"&gt;Sweet.&lt;/span&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9688" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author></entry><entry><title>$25 ASP.NET challenge</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/doubinski/archive/2003/07/03/9640.aspx" /><id>http://weblogs.asp.net/doubinski/archive/2003/07/03/9640.aspx</id><published>2003-07-03T04:45:00Z</published><updated>2003-07-03T04:45:00Z</updated><content type="html">
&lt;p&gt;&lt;span class="164110704-03072003"&gt;I'm yet to see 
ASP.NET code which does not use '~' mapping feature in Server.MapPath. We all 
love this feature, except... wait a minute... it is not documented?! 
Search on MSDN failed to uncover any statement stating that '~' in MapPath 
function refers to a virtual root (the task was not made any easier by the fact 
that tilde is ignored in a search). Could it be that we're all typing megalines 
of code against undocumented feature? And what, apart from bazillions of angered 
developers around the world, will stop ASP.NET team from changing it 
in 2.0 from '~' to, say '$', 'œ', '¥' or '½', for this matter 
:-). &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="164110704-03072003"&gt;Now, here is the 
georged&lt;span style="; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-AU; mso-fareast-language: EN-AU; mso-bidi-language: AR-SA"&gt;™&lt;/span&gt; 
challenge: the first person who points me to a piece of documentation explaining 
usage of a tilde character in MapPath is entitled to AUS $25 (about US$17 and &lt;a href="http://www.oanda.com/convert/classic?value=25&amp;amp;exch=AUD&amp;amp;expr=USD"&gt;rising&lt;/a&gt;). 
Money will be transferred to a &lt;a href="http://www.paypal.com"&gt;PayPal&lt;/a&gt; 
account or similar.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="164110704-03072003"&gt;Rules:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;span class="164110704-03072003"&gt;It must be 
  &lt;u&gt;official&lt;/u&gt; documentation, i.e. references to samples, user groups, 
  magazine articles, blogs, etc will not be considered.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="164110704-03072003"&gt;'First' will be 
  judged by UTC time of the reply/post/email.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="164110704-03072003"&gt;I decide who's 
  first and whether pointer/answer is correct.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="164110704-03072003"&gt;if(you.disagree) 
  goto 3;&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="164110704-03072003"&gt;Ah, what the heck, 
  Microsoft employees are also eligible to enter :-)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;div&gt;&lt;span class="164110704-03072003"&gt;Anyone?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span class="164110704-03072003"&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span class="164110704-03072003"&gt;Cheers&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span class="164110704-03072003"&gt;Georged&lt;/span&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9640" width="1" height="1"&gt;</content><author><name>georged</name><uri>http://weblogs.asp.net/members/georged.aspx</uri></author></entry></feed>