<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Melborp.EE</title>
    <description>Iga lahendus tekitab uusi probleeme ehk alati võib leida veel ühe bugi.</description>
    <link>http://melborp.ee/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.5.0.6</generator>
    <language>et-EE</language>
    <blogChannel:blogRoll>http://melborp.ee/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Melborp</dc:creator>
    <dc:title>Melborp.EE</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/melborp" /><feedburner:info uri="melborp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Nipp: Muuda sisu otse TFS 2010 konfliktihalduse aknast</title>
      <description>&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_49.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_48.png" alt="image" width="369" height="83" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kuigi TFS11 ja VS11 Previre versioonid on juba uksevahelt v&amp;auml;lja pugemas ning &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx" target="_blank"&gt;uue TFS11 &amp;ndash;ga kaasas olev merge ja diff&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (eesti keeles &amp;ldquo;&amp;uuml;hendus ja v&amp;otilde;rdlus vahend&amp;rdquo;?) vahend on nagu &amp;ouml;&amp;ouml; ja p&amp;auml;ev, kasutab suur hulk arendajaid j&amp;auml;tkuvalt TFS2010 &amp;ndash;t ning loodetavasti j&amp;auml;rgnev nipp on kasulik. Mina ise avastasin selle enda jaoks alles hiljuti ja see natukene punastama panev, aga ma mitte kunagi ei m&amp;otilde;elnud, et konfliktihaldus vahend v&amp;otilde;imaldab muudatusi otse teha tulemuses (kuigi see tundub n&amp;uuml;&amp;uuml;d t&amp;auml;iesti loogiline ja iseenesest m&amp;otilde;istetav).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;Kontekst&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;K&amp;otilde;igepealt tuleb muidugi kontekst paika panna. Oletame, et ma soovin oma muudatusi koodihaldusesse panna ja selle tegevuse peale &amp;uuml;tleb Team Explorer Visual Studio&amp;rsquo;s, et ei saa, konflikt on. Keegi teine on samasid ridasid n&amp;auml;ppinud, mis mina. &amp;Uuml;leval olev pilt illustreerib teadet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;Nipp&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seej&amp;auml;rel l&amp;auml;hen l&amp;auml;hen ma &amp;ldquo;Ootel olevad muudatused&amp;rdquo; aknasse ning provin konflikte lahendada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_50.png"&gt;&lt;img style="background-image: none; margin: 0px 40px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_49.png" alt="image" width="589" height="203" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Ainukene v&amp;otilde;imalik variant on konflikti lahendamiseks kasutada &amp;ldquo;&lt;em&gt;Merge&lt;/em&gt;&amp;rdquo; vahendit.&lt;/p&gt;
&lt;p&gt;Avaneb vahend kolme koodifaili aknaga, millest vasakul on serveris olev versioon, paremal on minu versioon ja all on konflikti lahenduse tulemus (pilt all).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_51.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_50.png" alt="image" width="661" height="336" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;N&amp;uuml;&amp;uuml;d aktsepteeritav lahendus s&amp;otilde;ltub muidugi olukorrast &amp;ndash; vahest on sobiv see mis on vasakul, vahest see mis on paremal ja vahest m&amp;otilde;lemad. Vahest on sobiv kombinatsioon vasakust ja paremast, aga mitte t&amp;auml;ies mahus. Oletame, et ma soovin esimest rida vasakult ja esimest rida paremalt. Sellisel juhul tegin mina tavaliselt nii &amp;ndash; aktsepteerisin m&amp;otilde;lemat, lahendasin konflikti ja ennem koodi sisse panemist l&amp;auml;ksin koodifaili kallale ning parandasin vead.&lt;/p&gt;
&lt;p&gt;Antud nipp pakub elegantsema lahenduse.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NIPP! Ma aktsepteerin m&amp;otilde;lemat lahendust, ning seej&amp;auml;rel muudan koodi sobivaks alumises koodifaili aknas. Alumise koodifaili akna sisu on muudetav!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_52.png"&gt;&lt;img style="background-image: none; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_51.png" alt="image" width="644" height="362" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;V&amp;auml;ga lihtne lahendus ning v&amp;otilde;imalik, et enamus TFS-I koodihaldusega t&amp;ouml;&amp;ouml;tavaid arendajaid teavad seda, aga minu jaoks oli &amp;uuml;llatus. Ma varem selle peale ei tulnud ja ometi ma peaks teadma &amp;uuml;ht-teist TFS-st.&lt;/p&gt;
&lt;p&gt;Edu!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/_5IqLdrD0o4/post.aspx</link>
      <comments>http://melborp.ee/post/2011/09/20/Nipp-Muuda-sisu-otse-TFS-2010-konfliktihalduse-aknast.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=221ea323-2c5a-4097-9a91-c8fd66c29fd5</guid>
      <pubDate>Tue, 20 Sep 2011 23:50:00 +0100</pubDate>
      <category>Team Foundation Server</category>
      <category>Tips &amp;amp; Tricks</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=221ea323-2c5a-4097-9a91-c8fd66c29fd5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=221ea323-2c5a-4097-9a91-c8fd66c29fd5</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/09/20/Nipp-Muuda-sisu-otse-TFS-2010-konfliktihalduse-aknast.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=221ea323-2c5a-4097-9a91-c8fd66c29fd5</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=221ea323-2c5a-4097-9a91-c8fd66c29fd5</feedburner:origLink></item>
    <item>
      <title>VS11, TFS11 Preview!</title>
      <description>&lt;p&gt;Eelmisel nädalal BUILD 2011 sündmusel avalikustas Microsoft palju uut informatsiooni, millest minu jaoks kõige põnevam on seotud Visual Studio 11 ja Team Foundation Server 11 –ga. &lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Nüüdseks on alla tõmmatav kõigile ka Preview versioon TFS11 –st ja Visual Studio 11 –st ning &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/14/team-foundation-server-on-windows-azure.aspx" target="_blank"&gt;Brian Harry blogil oleva koodiga oli võimalik registreerida end ka majutatud TFS11 Preview liikmeks&lt;/a&gt; ning käed külge panna majutatud TFS11 –le.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;u&gt;Liitu majutatud &lt;em&gt;TFS11 &lt;/em&gt;teenusega&lt;/u&gt;&lt;em&gt; &lt;/em&gt;või&lt;u&gt; tõmba alla VS11/TFS11&lt;/u&gt; ning proovi oma keskkonnas&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/14/team-foundation-server-on-windows-azure.aspx" target="_blank"&gt;Hosted TFS 11 Preview on Windows Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225709" target="_blank"&gt;VS11 Preview Download&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=225714" target="_blank"&gt;TFS 11 Preview Download&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Järgnevalt pakuksin hunniku viiteid, et lugeja saaks alustada tutvumist VS11 ja TFS11 –ga.&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Brian Harry kirjutised tänase hetkeni (19.09.2011)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/19/the-new-team-explorer-in-tfs-11.aspx" target="_blank"&gt;Team Explorer – TFS 11 –s&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/09/01/wrapping-up-tfs-11-version-control-improvements.aspx" target="_blank"&gt;TFS11 Koodihalduse parendused&lt;/a&gt; (3 osa)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx" target="_blank"&gt;TFS11 Koodihalduse parendused (2 osa)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/02/version-control-model-enhancements-in-tfs-11.aspx" target="_blank"&gt;TFS 11 Koodihalduse parendused (1 osa)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/07/27/developers-are-raving-fans.aspx" target="_blank"&gt;Arendajad on pöörased fännid&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/06/13/looking-ahead-to-the-next-version-of-vs-application-lifecycle-management.aspx" target="_blank"&gt;Vaade ALM-I järgmisele versioonile&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx" target="_blank"&gt;Agiilne projekti juhtimine järgmises VS rakenduse elutsüklis&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Videod BUILD 2011 sündmuselt&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-820F" target="_blank"&gt;What's new in Visual Studio 11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-833T" target="_blank"&gt;What's new in Visual Studio 11 for Application Lifecycle Management&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-818T" href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-818T" target="_blank"&gt;Taking your Application Lifecycle Management to the cloud with the Team Foundation Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-793T" target="_blank"&gt;Working on an agile team with Visual Studio 11 and Team Foundation Server 11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-792T" target="_blank"&gt;Advanced IntelliTrace in production with Visual Studio 11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-830T" href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-830T" target="_blank"&gt;Tips &amp;amp; tricks: how to use Visual Studio to the fullest&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-811T" target="_blank"&gt;Developer collaboration with Team Foundation Server 11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-808T" target="_blank"&gt;Building parallelized apps with .NET and Visual Studio&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-794T" target="_blank"&gt;Architectural discovery with Visual Studio 11&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Edu!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/2sTFrGoyGsg/post.aspx</link>
      <comments>http://melborp.ee/post/2011/09/19/VS11-TFS11-Preview!.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=7740c6d1-b98f-4c9f-a297-32ef6cd21006</guid>
      <pubDate>Mon, 19 Sep 2011 23:53:00 +0100</pubDate>
      <category>Team Foundation Server</category>
      <category>Visual Studio</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=7740c6d1-b98f-4c9f-a297-32ef6cd21006</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=7740c6d1-b98f-4c9f-a297-32ef6cd21006</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/09/19/VS11-TFS11-Preview!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=7740c6d1-b98f-4c9f-a297-32ef6cd21006</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=7740c6d1-b98f-4c9f-a297-32ef6cd21006</feedburner:origLink></item>
    <item>
      <title>Nipp: AsseblyInfo, AssemblyVersion, AssemblyFileVersion</title>
      <description>&lt;p&gt;J&amp;auml;rgnev nipp on kasulik rohkem toote arenduses, kui mujal &amp;ndash; v&amp;auml;hemalt ei ole see suuremat t&amp;auml;helepanu t&amp;uuml;&amp;uuml;pilisi t&amp;auml;htajalisi projekte arendades minu poolt saanud.&lt;/p&gt;
&lt;p&gt;Ma usun, et k&amp;otilde;ik .NET-i arendajad on teadlikud failist nimega AssemlbyInfo.*, mis iga projektiga kaasa tuleb, ja milles erinevad projekti kirjeldused, omadused, allkirjastamine jne kirja saab panna nii, et need kaasa ja arvesse v&amp;otilde;etaks kompileeritud programmi faili genereerimisel (binaar fail nagu .dll v&amp;otilde;i siis k&amp;auml;ivitatav fail nagu .exe).&lt;/p&gt;
&lt;h2&gt;Attribuudid &amp;ndash; AssemblyVersion ja AssemblyFileVersion&lt;/h2&gt;
&lt;p&gt;Antud failis on alati kirjas kaks j&amp;auml;rgnevat attribuuti (n&amp;auml;idis):&lt;/p&gt;
&lt;pre class="csharpcode"&gt;[assembly: AssemblyVersion(&lt;span class="str"&gt;"1.7.0.0"&lt;/span&gt;)]
[assembly: AssemblyFileVersion(&lt;span class="str"&gt;"1.7.5.5"&lt;/span&gt;)]&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AssemblyVersion&lt;/strong&gt; &amp;ndash; kompileeritud programmi koodi versioon, mida kasutatakse &amp;uuml;hest programmikoodikogust (binaar failist) teisele programmikoodikogule (binaar failile) viitamisel ning s&amp;otilde;ltuvuse kirjeldamisel (illustratsioon konfiguratsiooni failist, kus on defineeritud &lt;em&gt;custom&lt;/em&gt; sektsioon) &lt;br /&gt; &lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;section&lt;/span&gt; 
&lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="demo"&lt;/span&gt; 
&lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="TKInc.Demo.DemoSection, TKInc.Demo, &lt;span style="background-color: #ffff00;"&gt;Version=1.7.0.0&lt;/span&gt;, Culture=neutral, PublicKeyToken=88e86yy70c7749na"&lt;/span&gt; 
&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AssemblyFileVersion&lt;/strong&gt; &amp;ndash; faili versioon n&amp;auml;htav kui vaadata faili omadusi (j&amp;auml;rgneval pildil &amp;ndash; &lt;em&gt;File Version &lt;/em&gt;ja&lt;em&gt; Product Version&lt;/em&gt;) &lt;br /&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_46.png"&gt;&lt;img style="background-image: none; margin: 8px 270px 8px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_45.png" alt="image" width="383" height="301" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Attribuutide v&amp;auml;&amp;auml;rtused toote arenduses&lt;/h2&gt;
&lt;p&gt;Toote arenduses, milles ma ise igap&amp;auml;evaselt osalen on meil vaja toetada paraleelselt mitmeid erinevaid versioone, mis v&amp;otilde;ivad olla kasutuses kliendi keskkonnas (k.a. minor (2.&lt;span style="background-color: #ffff00;"&gt;1&lt;/span&gt;.0.0), service pack (2.1.&lt;span style="background-color: #ffff00;"&gt;2&lt;/span&gt;.2) kui ka hotfix (2.1.2.&lt;span style="background-color: #ffff00;"&gt;2&lt;/span&gt;) versioonid).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oletame, et kliendil 1 on toote versioon 2.1.0.0.&lt;/li&gt;
&lt;li&gt;Oletame, et kliendil 2 on toote versioon 2.2.0.0.&lt;/li&gt;
&lt;li&gt;Oletame, et kliendil 3 on toote versioon 2.1.2.2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Klient 1 ja 3 antud juhul, omavad sama assembly versiooni, aga erinevat faili versiooni.&lt;/p&gt;
&lt;p&gt;Meile, kui ettev&amp;otilde;ttele on t&amp;auml;htis teada t&amp;auml;pselt, mis versioon koodist jookseb kliendi keskkonnas. Samas, kuna toode on keerukas, arendus, deployment ja uuendamine tuleks teha v&amp;otilde;imalikult valutuks ja lihtsaks ning just siin tuleb appi nende kahe attribuudi nutikas &amp;auml;rakasutus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Nimelt v&amp;otilde;imaldab AssemblyFileVersion versioneerida ja pidada arvet t&amp;auml;pse deploytud kompileeritud koodi versiooni &amp;uuml;le, kuna see ei m&amp;otilde;juta &amp;uuml;htegi teist binaarfaili, mis s&amp;otilde;ltub ja viitab deploytud binaar failist.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; AssemlbyVersion-i uuendamine ainult major v&amp;otilde;i (major ja minor) versiooni numbrite muutmisel lihtsustab arendust ja deploymist, kuna ei ole vaja uuendada k&amp;otilde;iki viiteid antud binaar failile. Kui tegu on sama assembly versiooniga, ja muutunud ainult faili versioon, siis viiteid ei ole vaja uuendada.&lt;/p&gt;
&lt;p&gt;V&amp;otilde;tke Assembly versiooni kui lubadust teistele s&amp;otilde;ltuvatele osapooltele, et liides klassidele/meetoditele j&amp;auml;&amp;auml;b samaks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;T&amp;auml;helepanu! &lt;/strong&gt;Selleks, et end mitte orki ajada ning lubatud kasu l&amp;otilde;igata, tuleks j&amp;auml;rgida m&amp;otilde;nda lihtsat reeglit.&lt;strong&gt;&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esiteks, &lt;/strong&gt;kui muutub ainult faili versioon, siis ei tohi l&amp;otilde;hkuda &amp;uuml;htegi meetodi/klassi liidest, v&amp;otilde;i saate te &amp;uuml;llatuse osaliseks, kus m&amp;otilde;ndade meetodite v&amp;auml;lja kutsumine enam ei toimi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Teiseks&lt;/strong&gt;, kui te otsustate siiski assembly versiooni mitte muuta, aga l&amp;otilde;hute m&amp;otilde;ne liidese, siis v&amp;otilde;ibolla peate te samaaegselt uuendama mitut s&amp;otilde;ltuvat ja muudatusest m&amp;otilde;jutatud assemblyt, et rakendus saaks edasi toimida. Igatahes on see riskantsem ja mahukam ettev&amp;otilde;tmine.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ma toon v&amp;auml;lja v&amp;auml;&amp;auml;rtused toote arendusest, kuna selles valdkonnas tegelen ma ise hetkel ja just siin on mulle need silma hakanud. Teil on aga vaba valik leida v&amp;auml;&amp;auml;rtust ka mujalt, ja kui leiate, siis palun jagage ka minuga kommentaaride v&amp;otilde;i meili n&amp;auml;ol.&lt;/p&gt;
&lt;h2&gt;N&amp;auml;ide &amp;ndash; .NET v4&lt;/h2&gt;
&lt;p&gt;Juba praegu on .NET v4 &amp;ndash;le tehtud mitmeid uuendusi ja faili versioon on mitmeid kordi muutunud, aga kui te vaatate n&amp;auml;iteks machine.config faili v4.0 &amp;ndash;le, siis assembly versioon j&amp;auml;&amp;auml;nud samaks. See tagab lihtsama hallatavuse, ja samas teab alati, mis versioon koodist on kasutusel.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_47.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_46.png" alt="image" width="644" height="135" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Samal ajal details mscorlib.dll minu arendusmasinas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_48.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_47.png" alt="image" width="417" height="292" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Edu!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/3--vL3gujx8/post.aspx</link>
      <comments>http://melborp.ee/post/2011/08/31/Nipp-AsseblyInfo-AssemblyVersion-AssemblyFileVersion.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=a070dcaa-a223-437a-aecb-bfefd0288e63</guid>
      <pubDate>Wed, 31 Aug 2011 02:53:00 +0100</pubDate>
      <category>.Net</category>
      <category>Huvitav leid</category>
      <category>Tips &amp;amp; Tricks</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=a070dcaa-a223-437a-aecb-bfefd0288e63</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=a070dcaa-a223-437a-aecb-bfefd0288e63</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/08/31/Nipp-AsseblyInfo-AssemblyVersion-AssemblyFileVersion.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=a070dcaa-a223-437a-aecb-bfefd0288e63</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=a070dcaa-a223-437a-aecb-bfefd0288e63</feedburner:origLink></item>
    <item>
      <title>Microsoft otsib Partnertudengeid</title>
      <description>&lt;p&gt;Järjekordselt on kätte jõudnud aeg, mil Microsoft Eestis on alustanud partnertudengite otsingut tehnoloogia-, disaini- ja turundusvaldkonnas. See traditsioon sai alguse juba üle viie aasta tagasi ning selle aja jooksul on mitmed kümned eesti tudengid saanud võimaluse osaleda aktiivselt tehnoloogia ürituste organiseerimisel, nautida uusimate tehnoloogiate võlusid ning jagada teadmisi ja saada kogemusi esinedes, rääkides, kirjutades, väideldes, vaieldes erinevatel tehnoloogia teemadel.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Miks kandideerida? (MS-i lehelt)&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Rahvusvaheliselt tunnustatud partnertudengi staatus&lt;/li&gt;      &lt;li&gt;Tasuta ligipääs kogu Microsofti tarkvarale &lt;/li&gt;      &lt;li&gt;Hulgaliselt koolitusvõimalusi (tehnoloogiaraamatud, e-õppe &amp;amp; klassikoolitused) &lt;/li&gt;      &lt;li&gt;Võimalus saada Microsofti sertifitseeritud professionaaliks (MCP) &lt;/li&gt;      &lt;li&gt;Kuulumine superlahedasse Eesti tehnoloogiahuviliste tudengite eliitgruppi &lt;/li&gt;      &lt;li&gt;Võimalus osaleda põhjamaade ja Baltikumi MSP-de kokkutulekul Rootsis &lt;/li&gt;      &lt;li&gt;Tasuta reis aastaauhinna võitjatele &lt;/li&gt;      &lt;li&gt;Microsoft Eesti esinduse juhi soovituskiri tulevasele töökohale kandideerimiseks &lt;/li&gt;      &lt;li&gt;Hindamatu kogemus Microsofti meeskonda kuulumisest&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Ma ei saa teie eest otsustada ja ma ei tea, mida teie väärtustate, aga&lt;strong&gt; &lt;/strong&gt;ma olin üks MSP’de eellane ning need kogemused ja kontaktid, mis ma sain ning lõin ülikooli ajal esinedes, Microsofti meeskonnaga koos töötades, reisides, ennast (ja vahest ka teisi) koolitades, uue tarkvaraga tutvudes, on mul siiamaani alles, ma hindan neid kõrgelt ja on jätkuvalt värskelt meeles. Osalt just tänu sellele kogemusele ja osalusele olen ma jõudnud töötada Microsoftis, olnud MCT ja treenija ning olen hetkel MVP. Mul on alati heameel näha ja lobiseda sel ajal loodud tuttavate ja sõpradega Eestist, Euroopast, USA’st ja mujalt maailmast ning ühe mu esimese kontaktiga Microsoftist, Emanuele Ognissantiga õnnestub mul siiamaani iga aastaselt kohtuda ning väike lõuna või õhtusöök teha ja minevikust, olevikust kui ka tulevikust rääkida :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rohkemat infot ning avalduse vormi&lt;/strong&gt; leiad &lt;a href="http://www.microsoft.com/eesti/msp/" target="_blank"&gt;Microsofti lehelt&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Hetke ja eelmiste MSP-dega&lt;/strong&gt; saate ühendust võtta ning kandideerimise nippe küsida &lt;a href="http://www.facebook.com/mspeesti" target="_blank"&gt;Facebooki saidi&lt;/a&gt; vahendusel ;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Head kandideerimist, &lt;strong&gt;aega on vaid 2-se Oktoobrini!&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/daXtQoH_7hI/post.aspx</link>
      <comments>http://melborp.ee/post/2011/08/31/Microsoft-otsib-Partnertudengeid.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=d61442ea-bfc4-4be8-b551-66c9c8a3d1d7</guid>
      <pubDate>Wed, 31 Aug 2011 01:13:51 +0100</pubDate>
      <category>MSP</category>
      <category>Microsoft</category>
      <category>Uudis</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=d61442ea-bfc4-4be8-b551-66c9c8a3d1d7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=d61442ea-bfc4-4be8-b551-66c9c8a3d1d7</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/08/31/Microsoft-otsib-Partnertudengeid.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=d61442ea-bfc4-4be8-b551-66c9c8a3d1d7</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=d61442ea-bfc4-4be8-b551-66c9c8a3d1d7</feedburner:origLink></item>
    <item>
      <title>Uus TFS Power Tools – august 2011</title>
      <description>&lt;p&gt;Eile lasi v&amp;auml;lja Microsoft Visual Studio ALM&amp;ndash;i meeskond j&amp;auml;rgmise versiooni TFS-i power toolidest. Seekordne versioon toob nii m&amp;otilde;negi kasuliku uuenduse, millest nii m&amp;otilde;nedki TFS-i kasutajad puudust on tundnud.&lt;/p&gt;
&lt;h2&gt;Installeerimine&lt;/h2&gt;
&lt;p&gt;Esimene uuendus on see, et enam ei pea eelmist versiooni TFS Power Toolidest eemaldama, selleks et saaks uut versiooni installeerida, vaid installer uuendab uue versiooni peale ja eemaldab vana ennem. K&amp;uuml;ll v&amp;otilde;ib juhtuda et peate oma s&amp;uuml;steemi taask&amp;auml;ivitama (v&amp;otilde;i siis piisab windows exploreri restardist?)&lt;/p&gt;
&lt;h2&gt;T&amp;ouml;&amp;ouml;&amp;uuml;lesannete (&lt;em&gt;Workitem&lt;/em&gt;) otsing&lt;/h2&gt;
&lt;p&gt;Teine nendest on Power Toolidega v&amp;auml;lja lastav "&lt;em&gt;Workitem search&lt;/em&gt;&amp;rdquo;, mis teeb t&amp;auml;is s&amp;otilde;ne otsingu t&amp;ouml;&amp;ouml;&amp;uuml;lesannete (workitem) pealt. Sarnane laiendus on muidu &lt;a href="http://searchworkitems.codeplex.com/" target="_blank"&gt;eraldi codeplexi projekti&lt;/a&gt; kaudu k&amp;auml;ttesaadav olnud, aga n&amp;uuml;&amp;uuml;d plaanitakse see funktsionaalsus integreerida j&amp;auml;rgmise Visual Studio/TFS-i tootesse ja Power Tool v&amp;otilde;imaldab uue funktsionaalsuse juba varakult kasutajateni tuua. Selleks, et otsingu box n&amp;auml;htavale saada tuleb sisse l&amp;uuml;litada Visual Studio&amp;rsquo;s k&amp;auml;suriba nimega &amp;ldquo;Workitem Tracking&amp;rdquo; (all oleval pildil) ning seej&amp;auml;rel peaks n&amp;auml;gema punases kastis olevat k&amp;auml;suriba Visual Studio&amp;rsquo;s (punases kastis olevad nupud/otsingu kast).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parem kl&amp;otilde;ps Visual Studio toolbaril ning seej&amp;auml;rel avaneb loetelu erinevate vahendite jaoks, kust saab j&amp;auml;rgnevat valida.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_41.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_40.png" alt="image" width="267" height="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio&amp;rsquo;s otsingu toolbar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_42.png"&gt;&lt;img style="background-image: none; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_41.png" alt="image" width="610" height="118" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Muudatuste tagasi v&amp;otilde;tmine (&lt;em&gt;changeset rollback&lt;/em&gt;)&lt;/h2&gt;
&lt;p&gt;Kolmas uus funktsionaalsus on muudatuste rollbackimise (tagasi v&amp;otilde;tmise) kasutajaliides. Antud funktsionaalsus on olnud k&amp;auml;surealt k&amp;auml;ttesaadav alates TFS 2010-st, aga kasutajaliidest ei ole varem olnud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esimene valik.&lt;/strong&gt; Kasutaja liides n&amp;auml;eb v&amp;auml;lja j&amp;auml;rgmine, kui vajutada &amp;ldquo;Rollback &amp;hellip;&amp;rdquo; &lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;kausta&lt;/strong&gt;&lt;/span&gt; peal Source Control Exploreris.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_43.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_42.png" alt="image" width="511" height="310" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See liides pakub v&amp;otilde;imalusi tagasiv&amp;otilde;tta &amp;uuml;ks muudatus, v&amp;otilde;i rida muudatusi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Teine v&amp;otilde;imalus &lt;/strong&gt;on vajutada muudatuste ajaloos muudatuse peal parem kl&amp;otilde;ps ja rollback (all olev pilt).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_44.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_43.png" alt="image" width="563" height="308" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;T&amp;auml;helepanu! &lt;/strong&gt;Pange t&amp;auml;hele, et rollback on muudatus, mis tehakse esialgu teie oma kettal ning te peate muudatuse sisse checkima (pending changes) alt, et see TFS-i serveris realiseeruks (all olev pilt illustreerib). Seej&amp;auml;rel kajastub see kui eraldi checkin muudatuste ajaloos. See v&amp;otilde;imaldab ka rollback-i rollbackida ;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_45.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_44.png" alt="image" width="753" height="227" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Need funktsionaalsused olid m&amp;otilde;lemad ka k&amp;otilde;rgelt hinnatud &lt;a href="http://www.melborp.ee/post/2011/07/14/Kujunda-jargmist-Visual-Studio&amp;rsquo;t-ja-TFS&amp;rsquo;i.aspx" target="_blank"&gt;Visual Studio uservoice foorumis&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/08/08/aug-11-tfs-power-tools-coming-soon.aspx" target="_blank"&gt;Brian Harry tutvustab uut TFS Power Toolide versiooni&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aka.ms/tfpt" target="_blank"&gt;Siit t&amp;otilde;mba uus TFS Power Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Head TFS-i kui ka uue Power Tool&amp;rsquo;i kasutamist!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/z5YAf8D5Gis/post.aspx</link>
      <comments>http://melborp.ee/post/2011/08/20/Uus-TFS-Power-Tools-–-august-2011.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=2c81dc46-d57a-4378-9aa1-90fd8b6a8d42</guid>
      <pubDate>Sat, 20 Aug 2011 01:23:00 +0100</pubDate>
      <category>Team Foundation Server</category>
      <category>Uudis</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=2c81dc46-d57a-4378-9aa1-90fd8b6a8d42</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=2c81dc46-d57a-4378-9aa1-90fd8b6a8d42</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/08/20/Uus-TFS-Power-Tools-–-august-2011.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=2c81dc46-d57a-4378-9aa1-90fd8b6a8d42</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=2c81dc46-d57a-4378-9aa1-90fd8b6a8d42</feedburner:origLink></item>
    <item>
      <title>Kasulikud viited: Visual Studio ALM - 31072011</title>
      <description>&lt;p&gt;Seekordses postitused sooviksin jagada viimase aja kasulikumaid viiteid Visual Studio ALM valdkonnas. Ma proovin niisuguse viitekogu kokku panna umbes üks kord kuus eelneva kuu kohta.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.teamsystemcafe.net/Default.aspx" target="_blank"&gt;Team System Café&lt;/a&gt; – on lehekülg, mida oled soovinud blogida/mainida juba pikka aega, aga pole veel jõudnud. Igatahes agregeerib see lehekülg suure koguse informatsiooni Visual Studio ALM-I uudiste, how-to’de jt. kohta. Lisaks on lehel hunnik resursse presentatsiooni materjalide näol. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.accentient.com/community.aspx" target="_blank"&gt;Visual Studio ALM Community Blog Aggregator&lt;/a&gt; – nagu nimetus ise ütleb, on tegu agregaatoriga Visual Studio ALM blogi maastikult, kusjuures ühendab ta nii MVP’d, Visual Studio ALM Rangerid ja Visual Studio tootegrupi blogid. Agregaator võimaldab ka full-text otsingut üle blogide.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Brian Harry seeria teemal “Visual Studio ALM vNext” – antud seeria algust on paljud Visual Studio ALM MVP’d juba pikka aega oodanud. Miks? Kuna enne kui Microsoft ei ole avalikustanud informatsiooni järgmise versiooni muudatuste, uuenduste, omaduste kohta, ei tohi MVP’d sellest ka kirjutada. See on osa NDA’st mille kõik MVP’d alla kirjutavad. Igatahes Brian Harry on alustanud seeriat, kus ta räägib järgmise Visual Studio ALM versiooni erinevatest aspektidest ja soovitan kõikidel huvitatutel lugema minna. Hetkel küll alles 2 postitust, aga rohkem peaks olema teel.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a title="http://blogs.msdn.com/b/bharry/archive/2011/06/13/looking-ahead-to-the-next-version-of-vs-application-lifecycle-management.aspx" href="http://blogs.msdn.com/b/bharry/archive/2011/06/13/looking-ahead-to-the-next-version-of-vs-application-lifecycle-management.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2011/06/13/looking-ahead-to-the-next-version-of-vs-application-lifecycle-management.aspx&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a title="http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx" href="http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2011/06/14/agile-project-management-in-visual-studio-alm-v-next.aspx&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a title="http://blogs.msdn.com/b/bharry/archive/2011/07/27/developers-are-raving-fans.aspx" href="http://blogs.msdn.com/b/bharry/archive/2011/07/27/developers-are-raving-fans.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2011/07/27/developers-are-raving-fans.aspx&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vstsue/archive/2011/06/15/videos-about-visual-studio-alm-team-foundation-server-2010-on-msdn.aspx" target="_blank"&gt;Visual Studio ALM video viidete kogu&lt;/a&gt; – usin Microsofti töötaja nimega Esther Fan (ei ole kindel, kas see on õige nimi) on postitanud loetelu erinevatest “how do”&amp;#160; videotest.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358786" target="_blank"&gt;Visual Studio ALM Rangerid on jõudnud MSDN-I&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358787" target="_blank"&gt;Projektide loetelu&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://rabcg.codeplex.com/" target="_blank"&gt;VS ALM Rangerite materjal Build’i kohandamise võimalustest&lt;/a&gt; (&lt;em&gt;Build Customization Guidance&lt;/em&gt;) Visual Studio ALM’s. Codeplexi lehelt:&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Practical guidance and tooling to simplify the customization of Team Foundation Build        &lt;br /&gt;Practical guidance to use Team Foundation Build process templates to automate build and non-build scenarios in Microsoft environments         &lt;br /&gt;Practical guidance to enable simple and flexible deployment of applications and their data stores         &lt;br /&gt;Practical guidance for Activities to empower developers and build engineers         &lt;br /&gt;Quality hands-on labs that complement the guidance and effectively guide the user through the features        &lt;br /&gt;Visualization of the guidance using quick reference posters         &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/QdcswMqcgnA/post.aspx</link>
      <comments>http://melborp.ee/post/2011/07/31/Kasulikud-viited-Visual-Studio-ALM-31072011.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=629d8bb4-039c-477b-a31c-a3254fa99c0f</guid>
      <pubDate>Sun, 31 Jul 2011 23:42:00 +0100</pubDate>
      <category>Visual Studio</category>
      <category>Viited</category>
      <category>Team Foundation Server</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=629d8bb4-039c-477b-a31c-a3254fa99c0f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=629d8bb4-039c-477b-a31c-a3254fa99c0f</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/07/31/Kasulikud-viited-Visual-Studio-ALM-31072011.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=629d8bb4-039c-477b-a31c-a3254fa99c0f</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=629d8bb4-039c-477b-a31c-a3254fa99c0f</feedburner:origLink></item>
    <item>
      <title>Kujunda järgmist Visual Studio’t ja TFS’i</title>
      <description>&lt;p&gt;&lt;a href="http://www.melborp.ee/image.axd?picture=image_40.png"&gt;&lt;img style="background-image: none; margin: 0px 4px 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://www.melborp.ee/image.axd?picture=image_thumb_39.png" alt="image" width="236" height="79" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio ja Visual Studio rakenduse eluts&amp;uuml;kli haldamise (vot see on keerukas eesti keeles, m&amp;otilde;tlen muidugi &amp;bdquo;Application Lifecycle Management/ALM&amp;ldquo;) vahendite kohta tagasiside kogumiseks on Microsoftil juba paras ports erinevaid kanaleid nagu &lt;a href="http://connect.microsoft.com/visualstudio" target="_blank"&gt;connect&lt;/a&gt; (bugide kogumiseks kasutajatelt), &lt;a href="http://social.msdn.microsoft.com/Forums/" target="_blank"&gt;MSDN foorumid&lt;/a&gt; (k&amp;uuml;simustele vastamiseks, informatsiooni, jne. jagamiseks), &lt;a href="https://mvp.support.microsoft.com/communities/mvp.aspx?product=1&amp;amp;competency=Visual+Studio+ALM" target="_blank"&gt;Visual Studio ALM MVP&amp;rsquo;d&lt;/a&gt; (ja nende vastavad kanalid), tootegruppide blogid, m&amp;otilde;ned v&amp;auml;lised foorumid (nagu stackexchange) jt. N&amp;uuml;&amp;uuml;d on sellesse perekonda lisandunud uus kanal nimega &lt;a href="http://uservoice.com/" target="_blank"&gt;uservoice&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Uservoice v&amp;otilde;imaldab ettev&amp;otilde;tetel koguda tagasisidet toote funktsionaalsuste ja omaduste kohta, organiseerida helpdeski (kasutaja tuge), hallata probleeme ja k&amp;uuml;simusi. Ise pole seda varem kasutanud, seega suunaks lugeja targema &lt;a href="http://uservoice.com/fullservice" target="_blank"&gt;uservoice lehek&amp;uuml;lje peale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Microsoft on hetkel loonud selle keskkonna eesm&amp;auml;rgiga koguda kasutajatelt ideid ja tagasisidet v&amp;otilde;imalike uute funktsionaalsuste kohta. Kasutaja saab sisestada oma ideid, mida j&amp;auml;rgmine versioon Visual Studiost v&amp;otilde;i TFS-st (ehk siis hetkel arenduses olev versioon) v&amp;otilde;iks endas sisaldada (v&amp;otilde;i mida v&amp;otilde;iks muuta) ning seej&amp;auml;rel saavad k&amp;otilde;ik k&amp;uuml;lastajad h&amp;auml;&amp;auml;letada teda huvitavate ideede ja muudatuste poolt.&lt;/p&gt;
&lt;p&gt;Niimoodi kogub Microsoft tagasisidet toote kasutajatelt ning k&amp;otilde;ige suuremate h&amp;auml;&amp;auml;ltega (ehk siis kasutajaid/kliente k&amp;otilde;ige rohkem huvitav idee) v&amp;otilde;ib j&amp;otilde;uda ka reaalselt j&amp;auml;rgmisesse toote versiooni. Pange t&amp;auml;hele, et kasutajatel on limiteeritud kogus h&amp;auml;&amp;auml;li (10). Kasutage neid targalt!&lt;/p&gt;
&lt;p&gt;Ideid saate postitada ja h&amp;auml;&amp;auml;letada j&amp;auml;rgnevatelt saitidelt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://visualstudio.uservoice.com/"&gt;http://visualstudio.uservoice.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;a href="http://visualstudioalm.uservoice.com/"&gt;http://visualstudioalm.uservoice.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Head ideede genereerimist ja h&amp;auml;&amp;auml;letamist!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Lisa]&lt;/strong&gt; On olemas ka Silverlighti uservoice - &lt;a href="http://dotnet.uservoice.com"&gt;http://dotnet.uservoice.com&lt;/a&gt;&amp;nbsp;(v&amp;auml;hemalt hetkel kasutatakse seda silverlighti jaoks)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[UUENDUS - 16.07.2011] Visual Studio ALM uservoice sait on&amp;nbsp;kokku viidud&amp;nbsp;Visual Studio uservoice saidiga&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/582qMzpL9-A/post.aspx</link>
      <comments>http://melborp.ee/post/2011/07/14/Kujunda-jargmist-Visual-Studio’t-ja-TFS’i.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=406880a4-3dd2-43b2-94e5-42a2c8d541cc</guid>
      <pubDate>Thu, 14 Jul 2011 23:55:00 +0100</pubDate>
      <category>Team Foundation Server</category>
      <category>Uudis</category>
      <category>Visual Studio</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=406880a4-3dd2-43b2-94e5-42a2c8d541cc</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=406880a4-3dd2-43b2-94e5-42a2c8d541cc</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/07/14/Kujunda-jargmist-Visual-Studio’t-ja-TFS’i.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=406880a4-3dd2-43b2-94e5-42a2c8d541cc</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=406880a4-3dd2-43b2-94e5-42a2c8d541cc</feedburner:origLink></item>
    <item>
      <title>Tagasi blogimaastikul uue energiaga</title>
      <description>&lt;p&gt;P&amp;auml;ris pikk aeg on m&amp;otilde;&amp;otilde;das viimasest postitusest &amp;ndash; veidi rohkem kui 6 kuud. Niisuguse pika vahe tingis alguses pidev reisimine ja seej&amp;auml;rel suurem t&amp;ouml;&amp;ouml; kogus, mis reisimisega tekkis. Reisimisest l&amp;auml;hemalt &amp;ndash; detsembris sai Eestis k&amp;auml;idud nii loengut kui ka j&amp;otilde;ule pidamas, seej&amp;auml;rel kuu aega Tais seljakottidega reisimas (kui kellelgi on rohkem huvi Tai vastu siis v&amp;otilde;in sellest l&amp;otilde;putult r&amp;auml;&amp;auml;kida eraldi ja meil oli ka &lt;a href="http://usonthego.wordpress.com/" target="_blank"&gt;reisiblogi&lt;/a&gt; (k&amp;uuml;ll mitte p&amp;auml;ris l&amp;otilde;puni kirjutatud, aga siiski)), seej&amp;auml;rel v&amp;auml;ga suurep&amp;auml;rane MVP Summit Seattle&amp;rsquo;s ning viimaks kui m&amp;auml;rtsi keskpaigaks p&amp;uuml;sivamalt (s.t. kolmeks n&amp;auml;dalaks, enne j&amp;auml;rgmist reisi Eestisse) koju sai, siis oli paras kogus t&amp;ouml;&amp;ouml;d juba ees, nii et alles n&amp;uuml;&amp;uuml;d j&amp;otilde;udsin oma blogimise, blogi hostingu kui ka kavas olnud muudatuste kallale.&lt;/p&gt;
&lt;p&gt;Esimene muudatus on BlogEngine.NET uuendamine v1.6.1 pealt v2.5 peale. Varasem versioon lasi siiski liiga palju sp&amp;auml;mmi l&amp;auml;bi ja kuna mootor kasutab effektiivselt vahem&amp;auml;lu (&lt;em&gt;cache&lt;/em&gt;), siis p&amp;otilde;hjustas k&amp;uuml;mnete tuhandete postituste kommentaaride omamine serveris paari gigast m&amp;auml;lu tarbimist. Igatahes t&amp;auml;itsa ebameeldiv kogemus. v2.5 aga tundub mulle v&amp;auml;ga palju stabiilsemana ja uuendamine ise oli ka v&amp;auml;ga lihtne &amp;ndash; uue installeerimine ja seej&amp;auml;rel failide (pildid, postituste manused) kopeerimine uude asukohta ning andmebaasi uuendusskripti jooksutamine. Ei &amp;uuml;htegi probleemi.&lt;/p&gt;
&lt;p&gt;Teise sammuna l&amp;otilde;in Melborp.NET blogi kaheks &amp;ndash; eesti keelne sisu hakkab n&amp;uuml;&amp;uuml;dsest tekkima aadressile &lt;a href="http://www.melborp.ee" target="_blank"&gt;http://www.melborp.ee&lt;/a&gt; ja inglise keelne sisu aadressile &lt;a href="http://www.melborp.net" target="_blank"&gt;http://www.melborp.net&lt;/a&gt;. Olen juba pikka aega soovinud kirjutada postitusi ka inglise keeles ja n&amp;uuml;&amp;uuml;d l&amp;otilde;puks v&amp;otilde;tsin k&amp;auml;tte ning tegin &amp;auml;ra. Varasemalt olen mitu korda proovinud saanud inglise keelset blogi MVP-de keskkonda, aga siiamaani ei ole see &amp;otilde;nnestunud ja enam ei jaksa ka oodata.&lt;/p&gt;
&lt;p&gt;Kolmanda sammuna on veidikene ka muutunud disain, aga sellega t&amp;ouml;&amp;ouml; ei ole veel l&amp;otilde;ppenud. Muudatusi tuleb veel kindlasti, kuigi esimene prioriteet on hakata kirjutama uut sisu, uusi postitusi.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/QYyhtvpMxO0/post.aspx</link>
      <comments>http://melborp.ee/post/2011/07/12/Tagasi-blogimaastikul-uue-energiaga.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=5408f06b-8b52-46ad-9a4f-2e57b552a955</guid>
      <pubDate>Tue, 12 Jul 2011 01:58:00 +0100</pubDate>
      <category>Elu</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=5408f06b-8b52-46ad-9a4f-2e57b552a955</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=5408f06b-8b52-46ad-9a4f-2e57b552a955</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2011/07/12/Tagasi-blogimaastikul-uue-energiaga.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=5408f06b-8b52-46ad-9a4f-2e57b552a955</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=5408f06b-8b52-46ad-9a4f-2e57b552a955</feedburner:origLink></item>
    <item>
      <title>Eneta kommuuniõhtu: Visual Studio 2010 nipid ja trikid</title>
      <description>&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_39.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 8px 8px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://melborp.ee/image.axd?picture=image_thumb_38.png" width="247" height="213" /&gt;&lt;/a&gt; Sellel kolmapäeval on kavas jagada kõikidele huvilistele erinevaid kasulikke nippe ja trikke Visual Studio 2010 –s, mida olen oma viimase aasta jooksul &lt;em&gt;toolbox&lt;/em&gt;-i kogunud. Eesmärgiks olen seadnud TOPP 15 nippi ja trikki.&lt;/p&gt;  &lt;p&gt;Reklaamimisega olen jäänud mõnevõrra hiljale, kuid vast jõuavad veel enne jõule mõned kuulama tulla. &lt;/p&gt;  &lt;p&gt;Üritus on tasuta ja &lt;a href="http://www.eneta.ee"&gt;Eneta&lt;/a&gt; kommuuniõhtute raames. Toimub &lt;strong&gt;IT Kolledžis 15.12.2010 algusega kell 18.00&lt;/strong&gt;. Üritus on mõeldud enamasti arendajatele ja&lt;strong&gt; tasemeks on 300&lt;/strong&gt; ehk on väga kasulik varasem kokkupuude Visual Studio-ga.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Rohkem infot ja registreerimine Eneta lehelt: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.eneta.ee/sundmused/Lehed/eneta-kommuuniohtu-visual-studio-2010-nipid-ja-trikid.aspx" href="http://www.eneta.ee/sundmused/Lehed/eneta-kommuuniohtu-visual-studio-2010-nipid-ja-trikid.aspx" target="_blank"&gt;Eneta kommuuniõhtu: Visual Studio 2010 nipid ja trikid&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Loodan, teid kõikki näha sellel üritusel juba sellel kolmapäeval!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/v3QiwbPEJII/post.aspx</link>
      <comments>http://melborp.ee/post/2010/12/13/Eneta-kommuuniohtu-Visual-Studio-2010-nipid-ja-trikid.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=a2a6f1b6-b99b-41e5-a706-5937434cd1bc</guid>
      <pubDate>Mon, 13 Dec 2010 09:01:45 +0100</pubDate>
      <category>ENETA</category>
      <category>Visual Studio</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=a2a6f1b6-b99b-41e5-a706-5937434cd1bc</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=a2a6f1b6-b99b-41e5-a706-5937434cd1bc</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/12/13/Eneta-kommuuniohtu-Visual-Studio-2010-nipid-ja-trikid.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=a2a6f1b6-b99b-41e5-a706-5937434cd1bc</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=a2a6f1b6-b99b-41e5-a706-5937434cd1bc</feedburner:origLink></item>
    <item>
      <title>Huvitav leid: Convert.ToString(StringBuilder) käitub imelikult null väärtusega</title>
      <description>&lt;p&gt;Nagu mõned juba teavad, siis ma elan hetkel Stockholmis, Rootsis ja elu käib siin veidi teistmoodi kui kodumaal. Viimased paar kuud on olnud paras segadus kodu leidmisega siin ja kolitud mitmeid kordi, mille tulemusena on ka blogi maas olnud. Nüüd peaks see segaduste aeg läbi olema. Olen leidnud ühe kena kodu Stockholmi IT linnakus nimega “Kista” ning tegu on pikaajalise korteri üürilepinguga. Tänasest sai ka võrguühendus toimima ja ruuterid konfigureeritud ning blogi (ja muu serveris asuv) on nüüd täie elu juures.&lt;/p&gt;  &lt;p&gt;Oma aktiivset blogi postituste perioodi alustaks ühe lühipostitusega (hetkel kellaaeg juba veidi hiline pikemaks postituseks). &lt;/p&gt;  &lt;p&gt;Ja nüüd asja juurde. Paljud kasutavad StringBuilder klassi .NET–s, kui on vaja stringi töötlust suuremal määral teha. Ühes kohas, kus ma seda kasutan konverteerin ma StringBuilder’i string’iks kasutades Convert.ToString() meetodit. Muidugi saaks kasutada ka koodilõiku stringBuilderInstance.ToString(), aga see eeldab et StringBuilder alati eksisteeriks, mul aga juhtub ta vahest null olema ning sellisel juhul sooviks et konverteerimise tulemus oleks ka null. Teadupärast null.ToString() annab tulemuseks NullReferenceExceptioni hoopiski. Kuna kood tekstis ei ole kõige kergem viis info edastamsieks, siis läheks näidete juurde.&lt;/p&gt;  &lt;p&gt;Oletame, et mul on järgmine koodilõik.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; StringBuilder stringBuilder = MingiMeetodMisTagastabNullVõiStringBuilder();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; TeeVeelMidagi(Convert.ToString(stringBuilder));&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Tähelepanu!&lt;/strong&gt; Kui te veel ei tea, siis Convert.ToString() on turvaline viis konverteerida mdiagi string’ks. Ehk kui sinna anda null, siis tulemuseks on ka null. Kui sinna anda number, siis sellest tehakse tore string milles on number.&lt;/p&gt;

&lt;p&gt;Igatahes, meetod “TeeVeelMidagi()” eeldab sisse saada null, juhul kui stringbuilder instantsi väärtus on null. Kõikkide eelduste kohaselt võiks järgnev koodilõik muutuja “test” väärtuseks saada null. &lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; StringBuilder stringBuilder = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; test = Convert.ToString(stringBuilder);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//test == string.Empty, not null!!!&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div id="codeSnippetWrapper"&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Aga nii see pole&lt;/strong&gt;, vaid väärtuseks on hoopiski string.Empty (või tühi string). Minu jaoks on see väga imelik käitumine, kuna kirjutades:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; Convert.ToString(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Saan ma alati väärtuseks null. Miks peaks siis StringBuilder tüüpi muutuja, mille väärtuseks on null, käituma kuidagi erinevalt. Tuleb aga välja, et käitub erinevalt. &lt;/p&gt;

&lt;p&gt;Vaadates Reflectoriga järgi, siis näete et puudub Convert.ToString(StringBuilder), küll aga on olemas üldine meetod kõikide objektide jaoks. Antud juhul siis käivitub järgmine koodilõik:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ToString(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, IFormatProvider provider)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     IConvertible convertible = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt; &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; IConvertible;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (convertible != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; convertible.ToString(provider);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     IFormattable formattable = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt; &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; IFormattable;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (formattable != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; formattable.ToString(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, provider);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;value&lt;/span&gt; != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;.ToString();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt; Kuna antud StringBuilder ei vasta ühelegi tingimusele, siis jõuab jooksutamine viimase reani, kus tagastatakse külma rahuga string.Empty. See on siis käitumine kõikide olevuste puhul, mille jaoks ei ole olemas oma meetodit, vaid läheb objekti alla.&lt;/p&gt;

&lt;p&gt;Igatahes, oli see minu jaoks üllatuslik käitumine ja põhjustas ühe bugi lahenduses. Olge ettevaatlik ja ärge eeldage samat käitumist alati. Isegi null võib vahest muutuda tühjaks string’iks (eesti keeles sõne?) &lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/g91uPFwYqlQ/post.aspx</link>
      <comments>http://melborp.ee/post/2010/10/14/Huvitav-leid-ConvertToString(StringBuilder)-kaitub-imelikult-null-vaartusega.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=7decbfe3-66fd-4535-b428-e90b50eff9d4</guid>
      <pubDate>Thu, 14 Oct 2010 23:54:00 +0100</pubDate>
      <category>Huvitav leid</category>
      <category>.Net</category>
      <category>C#</category>
      <category>Huvitav leid</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=7decbfe3-66fd-4535-b428-e90b50eff9d4</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=7decbfe3-66fd-4535-b428-e90b50eff9d4</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/10/14/Huvitav-leid-ConvertToString(StringBuilder)-kaitub-imelikult-null-vaartusega.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=7decbfe3-66fd-4535-b428-e90b50eff9d4</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=7decbfe3-66fd-4535-b428-e90b50eff9d4</feedburner:origLink></item>
    <item>
      <title>Dünaamiline T-SQL – kuidas jooksutada õigesti?</title>
      <description>&lt;p&gt;Antud postituse eesmärk ei ole lahata dünaamilise SQL–i häid (igal asjal on omad plussid) ja halbu külgi (neid on rohkem kui üks) või tutvustada dünaamilist SQL-i, vaid välja tuua näide, kuidas dünaamiliselt ehitatud T-SQL päringut ehitama ja käivitama peaks. Seda ühe lihtsa halva demo näite põhjal. Postitus on ajendatud reaalsest elust, kus ma jätkuvalt kohtan halba dünaamilist T-SQL–i kasutamist. &lt;/p&gt;  &lt;p&gt;Igatahes oletame, et on vajadus kasutada dünaamilist T-SQL-i päringuid (näiteks põhjusel, et tegu on otsingu päringuga, kus on mitmeid tingimusi ja filtreid, mis mingitel kindlatel tingimustel kehtima peavad). &lt;/p&gt;  &lt;p&gt;Enne veel kui asun asja juurde, peaks selgitama ka seda, mida ma dünaamilise SQL–ina võtan. Antud kontekstis ja minu jaoks dünaamiline SQL on T-SQL päringu stringi kujul kokku panemine ning seejärel selle käivitamine näiteks EXEC(“päring”) kujul.&lt;/p&gt;  &lt;p&gt;Kujutame ette, et mul on järgmine andmetabel:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_36.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_35.png" width="284" height="173" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Millel on järgnev sisu:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_37.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_36.png" width="402" height="150" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Järgneb tüüpiline vanakooli dünaamiline SQL. Teeme mingit maagiat, saame sisse Stored Proci sisse parameetrid ning paneme kokku dünaamiliselt SQL –i ning seejärel käivitame EXEC(“”) abil.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; @name nvarchar(100)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @name = &lt;span style="color: #006080"&gt;'plapla'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; @Query nvarchar(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @Query = &lt;span style="color: #006080"&gt;'select * from Demo where name = '&lt;/span&gt;&lt;span style="color: #006080"&gt;''&lt;/span&gt; + @name + &lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXEC&lt;/span&gt; (@Query)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Puudused&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antud käivitamise viisil on mitmed tõsised puudused. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Sellele päringule ei looda plaani ning seda plaani siis muidugi ei cachita (ei saada jõudluse eeliseid, mis on Stored Procidel näiteks või parametriseeritud päringutel)&lt;/li&gt;

  &lt;li&gt;Väärtused ei ole “escaped” kujul, ehk kui teil on SP, millelesse tulevad parameetritena sisse SQL injection (‘select pla from plapla’--) ja teie SP sees ehitate omale usinalt dünaamilist SQL-i ning seejärel käivitate, on oht et teile tehakse ikkagi SQL injection (parimal juhul lihtsalt SP läheb katki sisendi peale).
    &lt;br /&gt;Kujutage ette, et päringuks on hoopiski “where name like ‘%pla’dart%’ ” – see ei toimiks üldsegi. See ei ole harukordne, näiteks mitmetes keeltes on populaarne kasutada ülakoma nimedes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lahendus&lt;/strong&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Lahenduseks on muundada see dünaamiline SQL ümber dünaamiliselt koostatut parametriseeritud sql päringuks. Kujutage ette, et @name on parameeter Store Proci ning kõik ülejäänud on dünaamilise SQL –i defineerimine selles SP-s. Defineerida on vaja parameetrid, mida päringus kasutatakse. Seejärel päring. Ning nüüd käivitada see päring kasutades “exec sp_executesql @Query, @QueryParameetrid, @param1, @param2, …&amp;#160; “.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; @name nvarchar(100)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @name = &lt;span style="color: #006080"&gt;'%pla'&lt;/span&gt;&lt;span style="color: #006080"&gt;'dart%'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; @ParameterDefinition nvarchar(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @ParameterDefinition = &lt;span style="color: #006080"&gt;'@name nvarchar(100)'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; @Query nvarchar(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @Query = &lt;span style="color: #006080"&gt;'select * from Demo where name like @name'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;exec&lt;/span&gt; sp_executesql @Query, @ParameterDefinition, @name&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Antud päringu tulemuseks üks rida:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_38.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_37.png" width="420" height="78" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Niimoodi käivitamisel on mitmed eelised. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Käivitades luuakse päringule plaan ja see cachitakse. &lt;/li&gt;

  &lt;li&gt;Ei ole probleemi teha otsingut väärtusega, mis näeb välja väga sql injectioni moodi (nende apostroofide tõttu).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Loodan, et sellest on abi!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/yk2klnyY9B8/post.aspx</link>
      <comments>http://melborp.ee/post/2010/10/04/Dunaamiline-T-SQL-e28093-kuidas-jooksutada-oigesti.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=d06aead2-72c1-4357-8490-2181aca62020</guid>
      <pubDate>Mon, 04 Oct 2010 23:55:00 +0100</pubDate>
      <category>Tips &amp;amp; Tricks</category>
      <category>SQL Server</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>T-SQL</category>
      <category>SQL Server</category>
      <category>SQL Server</category>
      <category>T-SQL</category>
      <category>T-SQL</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=d06aead2-72c1-4357-8490-2181aca62020</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=d06aead2-72c1-4357-8490-2181aca62020</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/10/04/Dunaamiline-T-SQL-e28093-kuidas-jooksutada-oigesti.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=d06aead2-72c1-4357-8490-2181aca62020</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=d06aead2-72c1-4357-8490-2181aca62020</feedburner:origLink></item>
    <item>
      <title>ASP.NET turvalisus – paanika patch</title>
      <description>&lt;p&gt;Loodetavasti pole see uudiseks kellelgi, et ASP.NET –is avastati tõsine turvaauk (&lt;em&gt;ASP.NET Crypto Oracle Padding Security Vulnearability&lt;/em&gt;) kaks nädalat tagasi ning kolmapäev sai turvaprobleemile ka Microsofti poolelt patch välja lastud. Reedel jõudis see patch ka Windows Update –i ning saab nüüd mugavalt paigaldada (WSUS või muud moodi).&lt;/p&gt;  &lt;p&gt;Ma ei hakka selgitama milles turvaprobleem seisnes vaid all poolt leiate lingikogu, kust lisainfot saada. Teised inimesed on selgitustöö juba väga hästi ära teinud.&lt;/p&gt;  &lt;p&gt;Tooks välja ühe postitiivse nüansi loos, kaks nädalat tagasi reedel sai avalikuks turvaauk ja see oli&amp;#160; tõsine ning läks vähem kui kaks nädalat ja sellele oli patch olemas ning windows update kaudu kättesaadav. Ma ei tea hetkel ühtegi patchi, mis Microsoft on välja lasknud niisuguse kiirusega. Nende toote releasimise protsess igasuguse täienduse välja laskmiseks on väga mahukas ja pikk ning pigem juhtub kuu ajaga midagi. &lt;/p&gt;  &lt;p&gt;Tundub, et arendus on neil jõudnud nii kaugele, et täiendused/parandused ja nende release ei ole enam nii mahukas tegevus. Seda väidet toetab natukene ka kõik need Power Tool’d Visual Studiole (jm toodete juures), mille release’i tsükkel on kõigest mõned kuud. Vähem kui 10a tagasi ei kujutanud paljud suurfirmad ette, et tarkvara saaks valmida vähem kui 2-3 aastaga. &lt;/p&gt;  &lt;p&gt;See kui kiiresti IT’s asjad liiguvad, jääb alati mind imestama panema. Samas see on üks põhjuseid, miks antud valdkonnas ka tegutsen – koguaeg on uut ja uus.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note: Kui keegi ei ole veel enda veebi serveritesse seda patchi paigutanud või isegi plaaninud paigutada, siis soovitan kiirelt oma käed käima panna. See turvaprobleem mõjutab absoluutselt KÕIKKI .NET –i rakendusi, mis jooksevad IIS –s (&lt;em&gt;.NET enabled web site&lt;/em&gt;). &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_35.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_34.png" width="644" height="283" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ja nüüd see lubatud lingikogu:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" target="_blank"&gt;Scottgu - Important ASP.NET Security Vulnerability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx" target="_blank"&gt;ScottGu: ASP.NET Security Vulnerability FAQ&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx" target="_blank"&gt;ScottGu: ASP.NET Security Fix Update available &lt;strong&gt;(otselingid downloadimiseks)&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx"&gt;ScottGu: Windows Update -s fix kättesaadav&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx" target="_blank"&gt;Understanding the Vulnearability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://blog.aggregatedintelligence.com/2010/09/aspnet-cryptographic-oracle-padding-cop.html" href="http://blog.aggregatedintelligence.com/2010/09/aspnet-cryptographic-oracle-padding-cop.html" target="_blank"&gt;More links and info on ASP.NET Crypto Oracle Padding Security Vulenarability&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Ja lõpetuseks üks video antud turvalisuse kuritarvitamisest.&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:812c1634-91f2-4903-907d-81f37be8be8e" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yghiC_U2RaM&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yghiC_U2RaM&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt; &lt;/ul&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/FbHzG3W7Jz0/post.aspx</link>
      <comments>http://melborp.ee/post/2010/10/03/ASPNET-turvalisus-e28093-paanika-patch.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=c97bd241-5445-41ac-8e95-1da65dd64b96</guid>
      <pubDate>Sun, 03 Oct 2010 23:58:00 +0100</pubDate>
      <category>Microsoft</category>
      <category>ASP.Net</category>
      <category>Security</category>
      <category>Microsoft</category>
      <category>.Net</category>
      <category>Security</category>
      <category>ASP.Net</category>
      <category>Microsoft</category>
      <category>Security</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=c97bd241-5445-41ac-8e95-1da65dd64b96</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=c97bd241-5445-41ac-8e95-1da65dd64b96</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/10/03/ASPNET-turvalisus-e28093-paanika-patch.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=c97bd241-5445-41ac-8e95-1da65dd64b96</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=c97bd241-5445-41ac-8e95-1da65dd64b96</feedburner:origLink></item>
    <item>
      <title>MSP – veel 9 päeva aega</title>
      <description>&lt;p&gt;Oled mõelnud, et tahaks teha rohkem ülikoolis olles? Soovid esineda ja jagada oma kogemust, õppida ning kogeda uut tehnoloogia või disaini valdkonnas. Kasutada ja uurida viimast Microsofti tehnoloogiat, ka seda, mis ei ole veel avalikkusele jõudnud? &lt;/p&gt;  &lt;p&gt;Praegu on kõigil tehnoloogia ja disaini eriala tudengitel võimalus proovida saada MSP –ks (Microsoft Student Partner) ning aega on jäänud veel 9 päeva, et oma avaldus ära saata. &lt;/p&gt;  &lt;p&gt;Kunagi aastal 2003, kui MSP programmi veel polnud, vaid olid Microsoft Tudeng Konsultandid (Microsoft Student Consultant või MSSC), sai just siit alguse minu põnev seiklus ja kokkupuude Microsofti tehnoloogia kui ka maailmaga. Ma olen olnud MuG –i liige kui ka selle loomise juures, ma olen töötanud Microsoftis mitmeid aastaid ja ma olen hetkel MVP Visual Studio ALM –i alal. Kõik see on pakkunud mulle unikaalset kogemust ja teadmist, mis on aidanud mind töökohale, kus hetkel olen ja kindlasti viib mind edasi ka siit. Teod, mis sai tehtud MuG-i, MSSC või MSP aegadel ülikooli ajal on siiamaani mu ühed meeldajäävaimad seigad ja kogemused ülikooli ajast.&lt;/p&gt;  &lt;p&gt;Rohkemat infot MSP programmi, avalduse ja muude nõuete/eeliste kohta leiate &lt;a href="http://www.microsoft.com/eesti/msp/" target="_blank"&gt;MSP leheküljelt&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Lisaks olen kogunud erinevad kasulikud lugemismaterjalid MSP teemal:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/eesti/msp/arvamused.html" target="_blank"&gt;Varasemate MSP –de kogemused/arvamused&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.battleit.eu/tag/tagasivaade-msp-aastale/" target="_blank"&gt;Sander Sootsi tagasivaade MSP aastale&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/evangelism/archive/2010/09/30/tudeng-tahad-n-228-ha-microsofti-masinav-228-rki-seestpoolt.aspx" target="_blank"&gt;Andres Sireli MSP postitus – Tudeng tahad näha Microsofti masinavärki seestpoolt&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.facebook.com/mspeesti" target="_blank"&gt;MSP Eesti Facebooki leht, kus saate suhelda varasemate ja hetke MSP -dega&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/R-wQEFICTLY/post.aspx</link>
      <comments>http://melborp.ee/post/2010/10/02/MSP-e28093-veel-9-paeva-aega.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=96a22cc3-f5f1-44d4-a6bf-d0757a0eda8f</guid>
      <pubDate>Sat, 02 Oct 2010 17:11:26 +0100</pubDate>
      <category>Microsoft</category>
      <category>Elu</category>
      <category>MSP</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=96a22cc3-f5f1-44d4-a6bf-d0757a0eda8f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=96a22cc3-f5f1-44d4-a6bf-d0757a0eda8f</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/10/02/MSP-e28093-veel-9-paeva-aega.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=96a22cc3-f5f1-44d4-a6bf-d0757a0eda8f</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=96a22cc3-f5f1-44d4-a6bf-d0757a0eda8f</feedburner:origLink></item>
    <item>
      <title>Kuidas migreerida: nUnit –&gt; MSTest –&gt; nUnit</title>
      <description>&lt;p&gt;Arendades v&amp;otilde;ib tekkida vajadus varasemalt kirjutatud MSTestid &amp;uuml;mber konverteerida nUniti omadeks v&amp;otilde;i siis nUniti omad MSTestideks. Minul on niisugune vajadus m&amp;otilde;nel korral tekkinud ja heameelega dokumenteeriks l&amp;auml;henemise tulevikuks.&lt;/p&gt;
&lt;p&gt;Ma kirjeldan &amp;auml;ra protsessi MSTesti testide migreerimise nUniti omadeks ning annan lisa viiteid kui peaksite vastupidist migreerimist tegema (mu varasem postitus + ..).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MSTest &amp;ndash;&amp;gt; nUnit&amp;rsquo;iks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Asenda (replace all) j&amp;auml;rgmised attribuudid oma testi koodifailides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TestClass -&amp;gt;TestFixture&lt;/li&gt;
&lt;li&gt;TestMethod -&amp;gt;Test&lt;/li&gt;
&lt;li&gt;TestInitialize &amp;ndash;&amp;gt; SetUp&lt;/li&gt;
&lt;li&gt;TestCleanup-&amp;gt;TearDown&lt;/li&gt;
&lt;li&gt;ClassInitialize &amp;ndash;&amp;gt; TestFixtureSetUp&lt;/li&gt;
&lt;li&gt;ClassCleanup &amp;ndash;&amp;gt; TestFixtureTearDown&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lisaks asenda (replace all) nimeruum &amp;ldquo;Microsoft.VisualStudio.TestTools.UnitTesting&amp;rdquo; &amp;ndash;&amp;gt; nimeruumiga &amp;ldquo;NUnit.Framework&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Juhul kui te kasutate MSTest spetsiifilisi meetodeid, siis peate manuaalselt parandama koodi. Abiks on &lt;a href="http://xunit.codeplex.com/wikipage?title=Comparisons&amp;amp;referringTitle=Home" target="_blank"&gt;xuniti v&amp;otilde;rdlustabel erinevate testimisraamistikega&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lisaks, kui te konverteerite nUniti class library projektist nUniti omaks, siis on vaja teil kohendada &lt;a href="http://melborp.ee/post/2010/07/29/Tip-Kuidas-saada-klassikogumi-projektist-VS-Test-Projekt.aspx" target="_blank"&gt;projekti faili&lt;/a&gt; elementide v&amp;auml;&amp;auml;rtusi (projekti id-d).&lt;/p&gt;
&lt;p&gt;Ning viimase m&amp;auml;rkusena, pidage meeles, et Visual Studio MSTesti projekt n&amp;otilde;uab sama .NET &amp;ndash;i versiooni kasutamist millega koos see Visual Studio on v&amp;auml;lja tulnud (VS2010 seega .NET 4.0, VS2008 .NET 3.5, VS2005 .NET 2.0, &amp;hellip; ). Lugege &lt;a href="http://melborp.ee/post/2010/09/26/Testi-projekt-voiks-olla-sama-NET-e28093i-versiooniga-kui-paris-toode.aspx" target="_blank"&gt;mu postitust&lt;/a&gt;, miks see t&amp;auml;htis on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Parandus]&lt;/strong&gt; &amp;Uuml;htegi automaatset vahendit MSTest -&amp;gt; NUnit failide konverteerimiseks ma kahjuks ei tea ja testiraamistiku spetsiifiliste meetodite kasutamise konverteerimiseks automaatika abil oleks parajalt keerukas &amp;uuml;lesanne.&lt;/p&gt;
&lt;p&gt;Edu!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/1LjHssbVp4Y/post.aspx</link>
      <comments>http://melborp.ee/post/2010/09/27/Kuidas-migreerida-nUnit-e280933e-MSTest-e280933e-nUnit.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=ce5094ef-4443-4f4d-ab12-c6f4beba126f</guid>
      <pubDate>Mon, 27 Sep 2010 00:03:00 +0100</pubDate>
      <category>.Net</category>
      <category>.Net</category>
      <category>C#</category>
      <category>C#</category>
      <category>Testimine</category>
      <category>Testimine</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Visual Studio</category>
      <category>Visual Studio</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=ce5094ef-4443-4f4d-ab12-c6f4beba126f</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=ce5094ef-4443-4f4d-ab12-c6f4beba126f</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/09/27/Kuidas-migreerida-nUnit-e280933e-MSTest-e280933e-nUnit.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=ce5094ef-4443-4f4d-ab12-c6f4beba126f</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=ce5094ef-4443-4f4d-ab12-c6f4beba126f</feedburner:origLink></item>
    <item>
      <title>Testi projekt võiks olla sama .NET –i versiooniga kui päris toode</title>
      <description>&lt;p&gt;See pole üks mu nutikamatest leiutistest – kasutada testide projekti, mis kompileerub uuema .NET –i versiooni vastu kui reaalne toote projekt. Ma soovin sellest kirjutada kahel põhjusel:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;juhul kui mul tuleb tuhin sama lollust teha, siis ehk meenutab see blogi postitus, miks antud mõte paha on&lt;/li&gt;    &lt;li&gt;juhul kui kellelgi teisel on sama mõte või ei pööra tähelepanu antud faktile, siis ehk päästab see väiksest supist teisi&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Mul oli olemas testide projekt ehitatud nUniti abil ja testid toimisd ilusti. Aga kuskil sügaval peas paiknes mul mõte, et neid teste võiks ju ka automaatselt iga buildiga jooksutada ja saada kinnitust, et kõik jätkuvalt toimib. TFS2010 puhul kõige lihtsaim viis selleks on MSTeste kasutada. Alati saab konfigureerida Team Build&amp;#160; teiste raamistikega ehitatud teste jooksutama, aga tavaliselt on selleks vaja natukene rohkem konfigureerida MSBuild/WF protsessi kui MSTestide puhul.&lt;/p&gt;  &lt;p&gt;Igatahes, et kiiremini teste automatiseerida ja et lihtsam oleks teste kirjutada/jooksutada Visual Studio 2010 -s, otsustasin migreerida nUniti testid MSTestide peale ja kui aus olla, siis see oli väga lihtne. Leiate mu varasema postituse selle kohta &lt;a href="http://melborp.ee/post/2010/07/29/Tip-Kuidas-saada-klassikogumi-projektist-VS-Test-Projekt.aspx" target="_blank"&gt;siit&lt;/a&gt; (postitus keskendub veidi muule, aga mainib ära nUnit-&amp;gt; MSTest –i konverteerimise). Kõik testid toimisid ootuspäraselt peale migreerimist.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tähtis&lt;/strong&gt; on teada, et Visual Studio MSTestide projekt toimib alati selle .NET –i versiooniga, millega koos ta välja lasti. (VS2010 seega .NET 4.0, VS2008 seega .NET 3.5, VS2005 .NET 2.0 jne). See on nii ehitatud hetkel. Toode mida testin on aga ehitatud .NET 3.5 –ga.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Antud tegevusel oli seega implikatsioon: &lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Testi projekt kasutas uuemat versiooni .NET –st kui testitav toode oma jooksutamiskeskkonnas.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Implikatsioon, millele oleks pidanud koheselt rohkem tähelepanu pöörama!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Aega läheb mõõda&lt;/strong&gt; ja teste saab usinalt lisatud. Kõik testid toimivad – on rohelised ja punased vastavalt minu ootustele ja arusaamistele. Tootekoodis on ka hulganisti logimise/träkkimise programmikoodi, mis toodab logisid ja milles olev info aitab analüüsida, kas kõik toimib oodatult ka runtime keskkonnas.&lt;/p&gt;  &lt;p&gt;Antud logidesse hakkavad ilmnema vead. Vead mille käsitlemiseks on koodis vastavad täiendused tehtud ja mida ei tohiks kuidagi ilmneda. On olemas ka testid mis tõestavad, et programmikood on korrektselt ehitatud ja antud sisendite/käitumise puhul ei ilmne vigasid. &lt;/p&gt;  &lt;p&gt;Pärast mitut tundi pead vastu seina tagumist, kui testid kõik toimivad aga hostingu/IIS keskkonnas tootekoodi jooksutades asi ei toimi, jõuan selleni et võrrelda .NET versioone kahe projekti vahel. Need on erinevad. Migreerin MSTesti tagasi nUnit peale ning proovin testi jooksutada .NET 3.5 –ga. Test ei tooda sama tulemust!&lt;/p&gt;  &lt;p&gt;Ma olin unustanud, et MSTesti puhul VS2010 –s pean ma kasutama .NET 4.0 ja sel hetkel kui migreerisin oli testide tulemused ja väljundid samad, kõik tundus toimivat samamoodi. Tuleb aga välja et .NET 4.0 –s on mõned asjad paremaks läinud ja ei visata vigasid, mis eelnevas versioonis pinnale jõudsid. &lt;/p&gt;  &lt;p&gt;Konkreetselt on tegu järgneva koodiga, kus kutsutakse välja Stored Procedure, mis tagastab kas XML –i või NULL väärtuse. Programmikood proovib käivitab Stored Proci ExecuteXmlReader() abil ning see haldab NULL väärtuse tagastamist erinevalt .NET 3.5 ja .NET 4.0 vahel. &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; XElement result = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (var reader = command.ExecuteXmlReader())&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (reader.MoveToContent() != XmlNodeType.None)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         result =  XElement.Load(reader);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;.NET 3.5 puhul viskab see järgneva vea “System.Data.SqlTypes.SqlNullValueException : Data is Null. This method or property cannot be called on Null values.”&lt;/p&gt;

&lt;p&gt;.NET 4.0 puhul ei visata midagi vaid tagastatakse XmlReader millel on XmlNodeType.None.&lt;/p&gt;

&lt;p&gt;Mul on veel anomaaliaid olnud, mis võibolla on seletatavad versiooni erinevusega, ma alles uurin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Õppetund&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Absoluutselt mitte kunagi ei tasu olla naiivne ja mõelda, et asjad toimivad sama moodi kahe .NET –i versiooni vahel. Testi projekt võib olla väärtusetu, kuna kasutab erinevat versiooni reaalsest tootest. Sama reegel kehtib üleüldse arendades - .NET –i versioon peab olema sama kuni Service Packi versiooni täpsusega, alati!&lt;/p&gt;

&lt;p&gt;Antud juhul on versioonide osas suurem erinevus ka selles, et CLR on erinev .NET 3.5 ja .NET 4.0 puhul. &lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/xvb915gn2-w/post.aspx</link>
      <comments>http://melborp.ee/post/2010/09/26/Testi-projekt-voiks-olla-sama-NET-e28093i-versiooniga-kui-paris-toode.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=efe18f3d-cf1d-482c-8a73-abeca54efb5c</guid>
      <pubDate>Sun, 26 Sep 2010 00:40:47 +0100</pubDate>
      <category>Arendus</category>
      <category>C#</category>
      <category>Testimine</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Visual Studio</category>
      <category>.Net</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=efe18f3d-cf1d-482c-8a73-abeca54efb5c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=efe18f3d-cf1d-482c-8a73-abeca54efb5c</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/09/26/Testi-projekt-voiks-olla-sama-NET-e28093i-versiooniga-kui-paris-toode.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=efe18f3d-cf1d-482c-8a73-abeca54efb5c</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=efe18f3d-cf1d-482c-8a73-abeca54efb5c</feedburner:origLink></item>
    <item>
      <title>Blogimootor uuendatud BlogEngine 1.6.1 peale!</title>
      <description>&lt;p&gt;Täna sai siis lõpuks kõrini versioonist BlogEngine.NET 1.5.0.7 ning viimane tunnikene olen uuendanud enda kui ka neiu blogimootori BlogEngine.NET 1.5.0.7 pealt 1.6.1 peale. Mitte, et vanemal versioonil oleks näiliselt tõsiseid puudusid olnud. Pigem väsisin spämmist. Ma olin ise teinud 1.5.0.7 –le pisitäienduse ning lisanud &lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/asirra/" target="_blank"&gt;Asirra Captcha&lt;/a&gt; külge. Minu implementatsioonil tundub aga olevat mõned augud, sest vaikselt tilkus umbes 16 spämmi kommentaari. Neiu blogil läks veidi hullemalt, tal tekkis neid tülikaid kommentaare rohkem, seega oli aeg ära vahetada.&lt;/p&gt;  &lt;p&gt;Uuel versioonil on &lt;a href="http://www.google.com/recaptcha" target="_blank"&gt;recaptcha&lt;/a&gt; sisse ehitatud ning hetkel on see meie mõlema blogil toimimas. Uuel versioonil on veel täiendusi nagu tsentraliseeritud kommentaaride haldus (spämmi mõnus kustutada), mõni turvapaik, twitter widget pakub rohkemat, loggimine, paranenud vigade haldus jne.&lt;/p&gt;  &lt;p&gt;Asirra Captcha osas ei oska hetkel seisukohta võtta – mulle see kasside ja koerte vahel valimine täitsa meeldib, aga arvan et pean hetke laienduse ümber ehitama ning kindlamaks tegema. Pole veel otsustanud, kas ja millal aja võtan selle jaoks. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Kasuliku juhendi BlogEngine.NET v1.5 pealt 1.6 peale uuendamise kohta &lt;/u&gt;&lt;a href="http://www.david-wynne.com/blog/post/Upgrading-BlogEngineNET-from-15-to-16.aspx" target="_blank"&gt;&lt;u&gt;David Wynne blogist&lt;/u&gt;&lt;/a&gt;&lt;u&gt;.&lt;/u&gt; Ainukene lisa, mis ma siia teeks on see, et &lt;u&gt;kui kasutate SQL –i andmebaasi andmete hoidmiseks&lt;/u&gt;, siis peale juhendi järgimist tuleb nii connectionstring (loogiline) kui ka vaikimisi providerite (&lt;em&gt;defaultprovider&lt;/em&gt;) “DbXProvider” –ite vastu vahetada (blogprovider, membershipprovider, roleprovider). Vaikimisi toimib mootor puhtalt XML-i peal. &lt;/p&gt;  &lt;p&gt;Samamoodi tuleb teil jooksutada muidugi andmebaasi script v1.5 –&amp;gt; v1.6 uuendamiseks.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Lisainfot:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://dotnetblogengine.net/page/BlogEngineNET-16-Release-Notes.aspx" href="http://dotnetblogengine.net/page/BlogEngineNET-16-Release-Notes.aspx" target="_blank"&gt;BlogEngine .NET 1.6 Release notes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.dotnetblogengine.net/post/BlogEngine-161-Update.aspx" href="http://www.dotnetblogengine.net/post/BlogEngine-161-Update.aspx" target="_blank"&gt;BlogEngine.NET 1.6.1 update notes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://blogengine.codeplex.com/wikipage?title=EnablingRecaptcha&amp;amp;referringTitle=Documentation" href="http://blogengine.codeplex.com/wikipage?title=EnablingRecaptcha&amp;amp;referringTitle=Documentation" target="_blank"&gt;Kuidas sisse lükata recaptcha 1.6.1 versioonis&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.david-wynne.com/blog/post/Upgrading-BlogEngineNET-from-15-to-16.aspx" href="http://www.david-wynne.com/blog/post/Upgrading-BlogEngineNET-from-15-to-16.aspx" target="_blank"&gt;Juhend uuendamaks BlogEngine.NET&amp;#160; v1.5 -&amp;gt; v1.6&lt;/a&gt;      &lt;br /&gt;&lt;strong&gt;PS!&lt;/strong&gt; Selle postituse all on ka juhend kuidas v1.6 –&amp;gt; v1.6.1 ilma et teha täis uuendust. &lt;/li&gt; &lt;/ul&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/mP25BNPaX8A/post.aspx</link>
      <comments>http://melborp.ee/post/2010/08/03/Blogimootor-uuendatud-BlogEngine-161-peale!.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=85f41c9c-ac56-41b1-bf06-5cbfc0456a2f</guid>
      <pubDate>Tue, 03 Aug 2010 01:43:43 +0100</pubDate>
      <category>Uudis</category>
      <category>BlogEngine.NET</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=85f41c9c-ac56-41b1-bf06-5cbfc0456a2f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=85f41c9c-ac56-41b1-bf06-5cbfc0456a2f</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/08/03/Blogimootor-uuendatud-BlogEngine-161-peale!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=85f41c9c-ac56-41b1-bf06-5cbfc0456a2f</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=85f41c9c-ac56-41b1-bf06-5cbfc0456a2f</feedburner:origLink></item>
    <item>
      <title>VS2010: Laienduste haldur pakub ka uuendusi!</title>
      <description>&lt;a href="http://melborp.ee/image.axd?picture=image_33.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 8px 8px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://melborp.ee/image.axd?picture=image_thumb_32.png" width="168" height="244" /&gt;&lt;/a&gt;  &lt;p&gt;Mulle meeldib VS2010 –e &lt;strong&gt;laienduste haldur (&lt;em&gt;Extension Manager&lt;/em&gt;)&lt;/strong&gt; kahel põhjusel:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sellega saab otsida laiendusi ja lisasid Visual Studiole &lt;/li&gt;    &lt;li&gt;Sellega saab teada, kui installeritud laiendustele on uuendusi&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Mõnus vahend, mis väldib vajaduse käsitsi minna &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/" target="_blank"&gt;Visual Studio Gallery&lt;/a&gt; lehele. &lt;/p&gt;  &lt;p&gt;Proovige ise järgi, kui veel ei ole!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_34.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_33.png" width="490" height="212" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Mõni teinekord kirjutan, mis lisasid veel kasutan Visual Studio 2010 sees. Kahte näete uuenduste näol juba ees pool oleval pildil.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/aSsn4pO8BUs/post.aspx</link>
      <comments>http://melborp.ee/post/2010/07/31/VS2010-Laienduste-haldur-pakub-ka-uuendusi!.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=1a1c86be-db2c-4ca4-92cf-179048f77c6e</guid>
      <pubDate>Sat, 31 Jul 2010 00:56:34 +0100</pubDate>
      <category>Visual Studio</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Visual Studio</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=1a1c86be-db2c-4ca4-92cf-179048f77c6e</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=1a1c86be-db2c-4ca4-92cf-179048f77c6e</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/07/31/VS2010-Laienduste-haldur-pakub-ka-uuendusi!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=1a1c86be-db2c-4ca4-92cf-179048f77c6e</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=1a1c86be-db2c-4ca4-92cf-179048f77c6e</feedburner:origLink></item>
    <item>
      <title>Tip: Entity Framework, andmebaasi protseduurid ja väljund parameetri väärtus</title>
      <description>&lt;p&gt;Antud nipp on kindlasti kogenumatele &lt;a href="http://msdn.microsoft.com/en-us/library/bb399567.aspx" target="_blank"&gt;EF-i (Entity Framework)&lt;/a&gt; ja SQL serveri andmebaasi protseduure (&lt;em&gt;stored procedure &lt;/em&gt;ehk&lt;em&gt; SP&lt;/em&gt;) kasutavatele arendajatele teada. Mina näpin EF-i niimoodi vahelduva eduga ja vahest satub mõne orka otsa lausa mitu korda. See on üks nendest oradest. See on ka selles mõttes ora, et normaalne ja loogiline (loe: oodatud) käitumine oleks teistsugune.&lt;/p&gt;  &lt;p&gt;Oletame, et mul on üks andmebaasi protseduur (SP), millel on üks sisend ja kaks väljund parameetrit (kusjuures väljundparameetrite arv antud juhul ei oma mingit tähtsust). &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;PROCEDURE&lt;/span&gt; [dbo].[Test_Sp] &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     @someval &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     @ValueOut &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;OUTPUT&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     @ValueOut2 &lt;span style="color: #0000ff"&gt;VARCHAR&lt;/span&gt;(50) &lt;span style="color: #0000ff"&gt;OUTPUT&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; NOCOUNT &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;  @ValueOut = &lt;span style="color: #0000ff"&gt;COUNT&lt;/span&gt;(*), @ValueOut2 = &lt;span style="color: #006080"&gt;'misiganes'&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [MingiTabel]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [MingiTabel]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; END&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Seejärel loon omale EF-i mudeli ning lisan SP antud mudelisse, et oleks &lt;em&gt;strongly typed&lt;/em&gt; lähenemine (kood) protseduuri väljakutsumiseks.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_27.png" width="194" height="166" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Kõik on ilus ja toimib suurepäraselt. Kirjutan ka koodi, mis antud protseduuri välja kutsub ja antud juhul lihtsalt kirjutab konsoolile.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_29.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_28.png" width="484" height="119" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Nüüd antud koodi oodatav väljund lugedes oleks, et “[MingiTabel] ridade arv“, “misiganes”. Päriselt on aga väljundiks: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_30.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_29.png" width="294" height="43" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Nüüd on aeg veidi pead kratsida ja mõelda, mida see EF õige mõtleb. Kui te SQL Profileriga vaataksite, siis te näete et OUTPUT väärtused ilusti tagastatakse. Objekti parameetritesse need aga ei jõua.&lt;/p&gt;

&lt;p&gt;Asi nimelt selles, et antud protseduur tagastab kaks asja – select lause tulemuse (loetelu mingitest objektidest) ja need kaks väljund parameetrit. EF eeldab, et oma täie mõistuse juures olles kõigepealt soovite loetelu mälusse saada ja alles seejärel on teil huvi nende väljud parameetrite vastu. ObjectResult&amp;lt;T&amp;gt; tundub olevat käitumise poolest sarnane olevus IQueryable&amp;lt;T&amp;gt; –ga, et andmed laetakse siis kui antud tulemusega soovitakse midagi peale hakata (n-ö &lt;em&gt;lazy loading&lt;/em&gt; ehk laisk laadimine) ja alles seejärel on muutuvad väljundparameetrid kättesaadavaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip!&lt;/strong&gt; Seega väljundparameetrite kättesaamiseks peate materialiseerima (kui nii võib kirjutada) oma loetelu ja siis on väljund parameetrite väärtused olemas. Toimiv kood näeb välja järgmine:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_31.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_30.png" width="485" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ning tulemus.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://melborp.ee/image.axd?picture=image_32.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://melborp.ee/image.axd?picture=image_thumb_31.png" width="284" height="66" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Edu!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/sEUhFH38eXY/post.aspx</link>
      <comments>http://melborp.ee/post/2010/07/31/Tip-Entity-Framework-andmebaasi-protseduurid-ja-valjund-parameetri-vaartus.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=89643cb1-1ad4-459d-b58e-68310589683b</guid>
      <pubDate>Sat, 31 Jul 2010 00:33:33 +0100</pubDate>
      <category>.Net</category>
      <category>.Net</category>
      <category>C#</category>
      <category>C#</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Tips &amp;amp; Tricks</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=89643cb1-1ad4-459d-b58e-68310589683b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=89643cb1-1ad4-459d-b58e-68310589683b</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/07/31/Tip-Entity-Framework-andmebaasi-protseduurid-ja-valjund-parameetri-vaartus.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=89643cb1-1ad4-459d-b58e-68310589683b</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=89643cb1-1ad4-459d-b58e-68310589683b</feedburner:origLink></item>
    <item>
      <title>Jama: Meili saatmine blogi kaudu ei toiminud peale Rootsi kolimist!</title>
      <description>&lt;p&gt;T&amp;auml;na avastasin, et meilide saatmine blogi kaudu oli katki. Mul oli see konfigureeritud kasutama ISP SMTP serverit ja muidugi p&amp;auml;rast kolimist rootsi, et olnud enam ISP sama.&lt;/p&gt;
&lt;p&gt;N&amp;uuml;&amp;uuml;d muutsin meili seaded nii, et kolimine enam mind ei m&amp;otilde;jutaks.&lt;/p&gt;
&lt;p&gt;Vabandan k&amp;otilde;igi ees, et meile saatsid! Ei saanud neid &amp;uuml;htegi k&amp;auml;tte. Palun saatke uuesti v&amp;otilde;i suhelge kommentaari n&amp;auml;ol siin v&amp;otilde;i postitusena ENETA foorumis (abistajaid rohkem).&lt;/p&gt;
&lt;p&gt;Antud n&amp;uuml;ansi t&amp;auml;helepanemine v&amp;otilde;ttis m&amp;otilde;nev&amp;otilde;rra aega, nagu n&amp;auml;ha &lt;img title="Frown" src="/editors/tiny_mce3/plugins/emotions/img/smiley-frown.gif" border="0" alt="Frown" /&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/90mOpgWiMTU/post.aspx</link>
      <comments>http://melborp.ee/post/2010/07/29/Jama-Meili-saatmine-blogi-kaudu-ei-toiminud-peale-Rootsi-kolimist!.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=19da82e7-0259-4e7f-a632-0d6b3cbd1893</guid>
      <pubDate>Thu, 29 Jul 2010 00:48:00 +0100</pubDate>
      <category>Elu</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=19da82e7-0259-4e7f-a632-0d6b3cbd1893</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=19da82e7-0259-4e7f-a632-0d6b3cbd1893</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/07/29/Jama-Meili-saatmine-blogi-kaudu-ei-toiminud-peale-Rootsi-kolimist!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=19da82e7-0259-4e7f-a632-0d6b3cbd1893</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=19da82e7-0259-4e7f-a632-0d6b3cbd1893</feedburner:origLink></item>
    <item>
      <title>Tip: Kuidas saada klassikogumi projektist VS Test Projekt</title>
      <description>&lt;p&gt;Projektides v&amp;otilde;ib ikka juhtuda, et te kasutate oma lahenduse &amp;uuml;hik testimisel (&lt;em&gt;unit test&lt;/em&gt;) m&amp;otilde;nda teist raamistikku, kui MSTest. Mina n&amp;auml;iteks kasutan vahest &lt;a href="http://www.nunit.org/" target="_blank"&gt;nUnitit&lt;/a&gt; v&amp;otilde;i &lt;a href="http://xunit.codeplex.com/" target="_blank"&gt;xUnitit&lt;/a&gt;. Mulle meeldib xUniti erinev testi kirjutamise stiil ja mulle meeldib nende m&amp;otilde;lema puhul see, et raamistiku kasutamiseks saab kasutada tavalist klassikogumi projekti. Ka on nende testide jooksutamine kohati kiirem.&lt;/p&gt;
&lt;p&gt;N&amp;uuml;&amp;uuml;d vahest v&amp;otilde;ib ka juhtuda nii, et teie mitte MSTesti raamistikul testid on vaja &amp;uuml;le viia MSTesti raamistiku peale ning kasutada Test Projekti. Mul tekkis konkreetne vajadus sellest, et MSTesti projekti on lihtsam kasutada &amp;uuml;le terve meeskonna, juhul kui k&amp;otilde;ik kasutavad ainult Visual Studiot. Ei ole vaja eraldi vahendit jooksutamiseks. Ka on integratsioon Team Buildiga vaikimisi toimiv, teiste raamistike puhul on vaja Team Buildi muuta vastavalt ja eraldi vaeva n&amp;auml;ha (mitte v&amp;auml;ga suur keerukus, aga siiski aeg). MSTestil on veel eeliseid ja erinevusi, aga see postitus ei ole &amp;otilde;ige koht selle jaoks.&lt;/p&gt;
&lt;p&gt;Igatahes, on vajadus muuta nUniti projekt (&lt;em&gt;class library&lt;/em&gt;) &amp;uuml;mber MSTest-i raamistikul jooksvaks projektiks (&lt;em&gt;Test Project&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;V&amp;otilde;rdlemisi lihtne konverteerimine:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Asenda &amp;uuml;hed attribuudid teistega (abik &lt;a href="http://xunit.codeplex.com/wikipage?title=Comparisons&amp;amp;referringTitle=Home" target="_blank"&gt;xUniti v&amp;otilde;rdlus erinevate unit testimis raamistikega&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;Eemalda projektist nUniti viide &lt;em&gt;assembly&lt;/em&gt;&amp;rsquo;le &lt;/li&gt;
&lt;li&gt;Lisa projektile viide MSTest unit testimis &lt;em&gt;assembly&lt;/em&gt;&amp;rsquo;le (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll) &lt;/li&gt;
&lt;li&gt;Muuda koodi, kus MSTestis ei ole vastavat Assert v&amp;auml;ljendit nUnitile (nagu Assert.Throws = [ExpectedException] etc.) &lt;/li&gt;
&lt;li&gt;Asendada using nUnit&amp;hellip; v&amp;auml;ljendid using Microsoft.VisualStudio&amp;hellip;. v&amp;auml;ljenditega &lt;/li&gt;
&lt;li&gt;(arvan et pole kohustuslik) lisada .vsmdi ja .testsettings failid solutionisse. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;P&amp;otilde;him&amp;otilde;tteliselt muud nagu ei olegi, k&amp;otilde;ik v&amp;auml;ga loogiline. Seej&amp;auml;rel kompileerite ja proovite Test View abil n&amp;auml;ha oma suurep&amp;auml;raseid &amp;uuml;hik teste, mis n&amp;uuml;&amp;uuml;d v&amp;otilde;iks toimida k&amp;otilde;ik MSTest abil. Ja mida te n&amp;auml;ete? &lt;strong&gt;MITTE MIDAGI!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On veel &amp;uuml;ks tore samm, mis on vaja teha&lt;/strong&gt;, et Visual Studio saaks aru, et tegu on testi projektiga ning vahend oskaks otsida teste ja neid kasutada.&lt;/p&gt;
&lt;p&gt;Teil on vaja lisada oma klassikogumi projekti faili uued projekti t&amp;uuml;&amp;uuml;bi identifikaatorid (ProjectTypeGuid &amp;ndash;d).&lt;/p&gt;
&lt;p&gt;K&amp;otilde;ige lihtsam viis neid leida on luua t&amp;uuml;hi TestProjekt ja editeerida projekti faili ning XML-st &amp;uuml;les leida element nimega &amp;ldquo;ProjectTypeGuids&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Nendeks on j&amp;auml;rgmised GUID-d:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectTypeGuids&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt; {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectTypeGuids&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;P&amp;auml;rast nende lisamist projekti faili on elu ilus ning testid peaksid jooksma!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NB!&lt;/strong&gt; Lisaks siia veel &amp;uuml;he t&amp;auml;helepaneku Test Projekti puhul - see peab kasutama seda versiooni .NET-st, millega koos Visual Studio v&amp;auml;lja tuli ja mis on vaikimisi raamistik (VS2008 puhul .NET 3.5, VS2010 puhul .NET 4.0). Iseenesest ei ole see takistus v&amp;otilde;i probleem, kuna testi projekti ju keegi kuskile ei paigalda ja arendajatel on tavaliselt ikkagi samad versioonid Visual Studiost (v&amp;otilde;i siis on paksu pahandust mitme erinevat versiooni &lt;em&gt;VS solution&lt;/em&gt; ja &lt;em&gt;project&lt;/em&gt; failidega).&lt;/p&gt;
&lt;p&gt;Edu konverteerimisega, kui peaks vajadus olema!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/melborp/~3/VRt4kUlBCFo/post.aspx</link>
      <comments>http://melborp.ee/post/2010/07/29/Tip-Kuidas-saada-klassikogumi-projektist-VS-Test-Projekt.aspx#comment</comments>
      <guid isPermaLink="false">http://melborp.ee/post.aspx?id=c68eb9fc-4a71-40e2-bcda-2d4320fa0d55</guid>
      <pubDate>Thu, 29 Jul 2010 00:42:00 +0100</pubDate>
      <category>Testimine</category>
      <category>Tips &amp;amp; Tricks</category>
      <category>Visual Studio</category>
      <category>VS Tests</category>
      <dc:publisher>melborp</dc:publisher>
      <pingback:server>http://melborp.ee/pingback.axd</pingback:server>
      <pingback:target>http://melborp.ee/post.aspx?id=c68eb9fc-4a71-40e2-bcda-2d4320fa0d55</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://melborp.ee/trackback.axd?id=c68eb9fc-4a71-40e2-bcda-2d4320fa0d55</trackback:ping>
      <wfw:comment>http://melborp.ee/post/2010/07/29/Tip-Kuidas-saada-klassikogumi-projektist-VS-Test-Projekt.aspx#comment</wfw:comment>
      <wfw:commentRss>http://melborp.ee/syndication.axd?post=c68eb9fc-4a71-40e2-bcda-2d4320fa0d55</wfw:commentRss>
    <feedburner:origLink>http://melborp.ee/post.aspx?id=c68eb9fc-4a71-40e2-bcda-2d4320fa0d55</feedburner:origLink></item>
  </channel>
</rss>

