<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>C#</title>
        <link>http://geekswithblogs.net/casualjim/category/4494.aspx</link>
        <description>C#</description>
        <language>en-NZ</language>
        <copyright>Ivan Porto Carrero</copyright>
        <managingEditor>ivan@flanders.co.nz</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Essential Tools for web development</title>
            <link>http://geekswithblogs.net/casualjim/archive/2006/06/24/82853.aspx</link>
            <description>&lt;P&gt;Peter has a post giving an overview of some tools that are essential to him as a developer.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://jonesie.net.nz/EssentialTools.aspx"&gt;http://jonesie.net.nz/EssentialTools.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I would say that I use most of them but not all and I would like to add a few to the list because i mainly do webdevelopment and that's a different story then winforms.&lt;BR&gt;Obviously I made the choice to go for &lt;a title="The asp.net 2.0 atlas framework" href="http://atlas.asp.net" &gt;The asp.net 2.0 atlas framework&lt;/a&gt; so I won't sum up any other ajax frameworks. That is reserved for a separate post.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AJAX/Web development:&lt;/P&gt;
&lt;P&gt;Internet Explorer : &lt;BR&gt;&lt;A href="http://www.fiddlertool.com/Fiddler/version.asp"&gt;Fiddler&lt;/A&gt;&amp;nbsp;- a tool to view http traffic (that gets sent through IE)&lt;BR&gt;&lt;A href="http://www.nikhilk.net/Project.WebDevHelper.aspx"&gt;WebdevelopmentHelper BHO &lt;/A&gt;- A tool written by Nikhil Kothari and I consider it crucial&lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en"&gt;Internet Explorer Developer Toolbar&lt;/A&gt;&amp;nbsp;- This has got a lot of cool things you do want to know about your page sometimes.&lt;/P&gt;
&lt;P&gt;Mozilla/firefox : &lt;BR&gt;&lt;A href="http://greasemonkey.mozdev.org/"&gt;Greasemonkey&lt;/A&gt;&amp;nbsp;- makes firefox highly extensible.&lt;BR&gt;&lt;A href="http://chrispederick.com/work/webdeveloper/"&gt;WebDeveloper toolbar&lt;/A&gt;&amp;nbsp;- This has got a lot of cool things you do want to know about your page sometimes.&lt;BR&gt;&lt;A href="http://www.mozilla.org/projects/venkman/"&gt;Venkman Javascript Debugger&lt;/A&gt; - Javascript debugging is a must :)&lt;BR&gt;&lt;A href="http://blog.monstuff.com/archives/000291.html"&gt;Greasemonkey Http Trace script&lt;/A&gt; - does the same as the BHO or fiddler for IE.&lt;/P&gt;
&lt;P&gt;Collaborative development:&lt;BR&gt;We are mostly using team foundation server to do continuous integration. However sometimes when a lot of different parties are involved we can't use the team foundation testing suite and then we use other tools to do our integration.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.testdriven.net/default.aspx"&gt;TestDriven.NET&lt;/A&gt;&amp;nbsp;- does nunit testing and code coverage in VS 2005 - this used to be free but it isn't anymore.&lt;BR&gt;&lt;A href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;CruiseControl.NET&lt;/A&gt; - does the builds based on nAnt or msbuild build scripts etc. It's the continous integration server alternative that we use&lt;BR&gt;&lt;A href="http://www.roland-weigelt.de/ghostdoc/"&gt;GhostDoc&lt;/A&gt;&amp;nbsp;- essential for documenting your code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img width="0" height="0" src="http://dasblog/cptrk.ashx?id=9a936f53-cc46-4400-ae6e-12064c56883a"&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=82853"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=82853" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/casualjim/aggbug/82853.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ivan Porto Carrero</dc:creator>
            <guid>http://geekswithblogs.net/casualjim/archive/2006/06/24/82853.aspx</guid>
            <pubDate>Sat, 24 Jun 2006 12:17:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/casualjim/comments/82853.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/casualjim/archive/2006/06/24/82853.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/casualjim/comments/commentRss/82853.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/casualjim/services/trackbacks/82853.aspx</trackback:ping>
        </item>
        <item>
            <title>Multi-Threading in asp.net</title>
            <link>http://geekswithblogs.net/casualjim/archive/2006/03/02/77729.aspx</link>
            <description>&lt;P&gt;I got a question asked just recently about multi threading and async execution of a page.&lt;/P&gt;
&lt;P&gt;About async execution I am a little bit biased because for asp.net I don't really see a huge benefit most of the time and I really believe it should be used very wisely. &lt;/P&gt;
&lt;P&gt;Spawning threads on the other hand is more convient for lengthy operations that are not essential to the execution of the page.&amp;nbsp; I will just copy paste the mail I've sent to the other guy. It came with a question on what about cleaning of the objects afterwards&lt;/P&gt;
&lt;DIV&gt;If you use it async &lt;A onclick="return top.js.OpenExtLink(window,event,this)" href="http://asp.net/" target=_blank&gt;asp.net&lt;/A&gt; should take care of the cleaning.&lt;/DIV&gt;
&lt;DIV&gt;I haven't used the async scenario yet because I jump to separate threads more quickly that way my page isn't blocked ever and I can update the interface through a timed ajax call to a webservice.&lt;/DIV&gt;
&lt;DIV&gt;I use the multi threading to send mass emails with progress bar etc.&lt;/DIV&gt;
&lt;DIV&gt;Once you've done it you will see that it is pretty easy to implement and has IMHO more advantages than simply executing a page async because you don't have to wait for the execution to end.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You start by making a worker class with a parameterised constructor that implements at least the following interface&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: #efeec9; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: #efeec9; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: #efeec9; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;interface&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; IAggregatorWorker&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; ExecuteTask();&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;bool&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;KeepRunning { &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;get&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;set&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;The execute task method is the method where you do your work as long as KeepRunning is set to true.&amp;nbsp; I believe that sessionstate is unavailable in a spawned thread so you will have to find a way to persist your session objects differently if you are needing them at all. &lt;/DIV&gt;
&lt;DIV&gt;If you want to add properties for the worker thread to work with you that is no problem it behaves as a normal class as far as i can tell&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;In your page you start a thread by instantiating your workerclass and setting the properties&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: #efeec9; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BLL.MailThreadWorker mtc = &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; BLL.MailThreadWorker();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mtc.Body = tbBody.Text;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mtc.Subject = tbSubject.Text;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: teal"&gt;Guid&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; id = &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: teal"&gt;Guid&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;.NewGuid();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mtc.BaseUrl = Request.Url.DnsSafeHost;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mtc.SessionId = id;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Threading.&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: teal"&gt;Thread&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; thread = &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; System.Threading.&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: teal"&gt;Thread&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;(&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: blue"&gt; new&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; System.Threading.&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: teal"&gt;ThreadStart&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt;(mtc.MailingStart));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; thread.Name = &lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white; COLOR: maroon"&gt;"MailingThread"&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: white"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: white"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; thread.Start();&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You can stop or suspend the thread at any time and then you can dispose of your objects that are still hanging around. By setting the property of KeepRunning property of the worker instance to false.&lt;/DIV&gt;
&lt;DIV&gt;and there you should do your clean-up.&amp;nbsp; The code from the mailingthread is taken from the code beside (i believe is the new word for the file) of my aspx page.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;This is a link to an article on msdn that explains it probably a lot cleaner than I ever can. Other good examples to look at what you can do with threading is to look after articles about windows services there are a few that explain the concept really clearly &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A onclick="return top.js.OpenExtLink(window,event,this)" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchUsingThreads.asp" target=_blank&gt;http://msdn.microsoft.com&lt;WBR&gt;/library/default.asp?url=&lt;WBR&gt;/library/en-us/dv_vstechart&lt;WBR&gt;/html/vbtchUsingThreads.asp &lt;/A&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;img width="0" height="0" src="http://dasblog/cptrk.ashx?id=b3d585c9-51f9-4ea0-8466-db8609e50b4d"&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77729"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77729" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/casualjim/aggbug/77729.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ivan Porto Carrero</dc:creator>
            <guid>http://geekswithblogs.net/casualjim/archive/2006/03/02/77729.aspx</guid>
            <pubDate>Fri, 03 Mar 2006 05:30:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/casualjim/comments/77729.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/casualjim/archive/2006/03/02/77729.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/casualjim/comments/commentRss/77729.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/casualjim/services/trackbacks/77729.aspx</trackback:ping>
        </item>
    </channel>
</rss>