<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.lv/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Valdis Iljuconoks</title><subtitle type="html">System.Web.HttpContext.Current.Repsonse.Write(GenerateMemos(this));</subtitle><id>http://dotnet.lv/blogs/vi/atom.aspx</id><link rel="alternate" type="text/html" href="http://dotnet.lv/blogs/vi/default.aspx" /><link rel="self" type="application/atom+xml" href="http://dotnet.lv/blogs/vi/atom.aspx" /><generator uri="http://communityserver.org" version="4.0.30619.63">Community Server</generator><updated>2009-10-21T18:42:04Z</updated><entry><title>AppFabric beta 2</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/03/03/appfabric-beta-2.aspx" /><id>/blogs/vi/archive/2010/03/03/appfabric-beta-2.aspx</id><published>2010-03-03T14:42:00Z</published><updated>2010-03-03T14:42:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Tiem, kas nav pamanīju&amp;scaron;i, tad biju&amp;scaron;ais projekts ar koda nosaukumu &amp;ldquo;Velocity&amp;rdquo; kādu laiciņu atpakaļ ir ticis pārsaukts par &amp;ldquo;AppFabric&amp;rdquo;. Varbūt ne pats veiksmīgākais buzz-words &amp;scaron;im projektam, bet anyway galvenā ideoloģija un iespēju sets ir saglabājies un nāku&amp;scaron;as tikai klāt jaunas iespējas.&lt;/p&gt;
&lt;p&gt;Tātad vakar (2. martā) klajā tika laista beta 2 versija, kas ir bināri savietojama ar VS 10 RC būvējumu.&lt;/p&gt;
&lt;p&gt;Kopsummā var just, ka &amp;ldquo;Velocity&amp;rdquo; projekts &amp;scaron;ā vai tā &amp;ldquo;skrien&amp;rdquo; pakaļ nu jau aizbrauku&amp;scaron;ajam vilcienam :) Cerams, ka ar VS 11 versiju, ke&amp;scaron;atmiņas un scalability risinājums tiks iekļauts pilnvērtīgi jau platformā un tiks pakļauts vienotai laidienu politikai, kā tas pamazām notiek ar visām vairāk vai mazāk svarīgām bibliotēkām.&lt;/p&gt;
&lt;p&gt;Tātad, ja ir vēlme paspēlēties un saprast, kas ir AppFabric, ir vērts iegādāties beta 2 versiju &amp;ndash; &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=a1ed6018-ddd1-4bd8-b4af-6561e910ebb4"&gt;&amp;scaron;eit&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;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=10645" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Caching" scheme="http://dotnet.lv/blogs/vi/archive/tags/Caching/default.aspx" /><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>Grāmatvedību uzticam pašam objektam</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/02/28/gr-matved-bu-uzticam-pa-am-objektam.aspx" /><id>/blogs/vi/archive/2010/02/28/gr-matved-bu-uzticam-pa-am-objektam.aspx</id><published>2010-02-28T21:30:00Z</published><updated>2010-02-28T21:30:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Līdz ar RC versijas izlai&amp;scaron;anu jaunajai vizuālajai studijai ir iespēja papētīt jaunās iespējas, kas līdz &amp;scaron;im bija pieejamas tikai dažādās spēka pakotnēs (angl. &lt;em&gt;power packs&lt;/em&gt;) vai nākotnes vīziju (angl. &lt;em&gt;feature preview&lt;/em&gt;) saturo&amp;scaron;ās instalācijas paciņās.&lt;/p&gt;
&lt;p&gt;&amp;Scaron;oreiz stāsts par jaunā Entity Framework (EF) iespēju &amp;ndash; &amp;ldquo;Self-Tracking Entities&amp;rdquo;. &amp;Scaron;ī iespēja piedāvā veidot datu modeļus, kuri pa&amp;scaron;i parūpējas par datu izmaiņu grāmatvedību iek&amp;scaron;ienē pa&amp;scaron;ā objektā.&lt;/p&gt;
&lt;p&gt;Lai uzskatamāk nodemonstrētu &amp;scaron;o iespēju vislabākais veids ir to salīdzināt ar līdz &amp;scaron;im pieejamajām EF iespējām.&lt;/p&gt;
&lt;p&gt;Piemērs ir pavisam triviāls, bet uz vienkār&amp;scaron;ākajiem piemēram parasti tēma ir saprotamāka un uztveramāka :)&lt;/p&gt;
&lt;p&gt;Tātad datu modelis ir pavisam vienkār&amp;scaron;s (klienti un to adreses).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img height="237" width="442" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/datamodel_5F00_6B29A988.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pieņemot, ka mums ir jau izveidots EF datu modelis, varam veikt kādu konkrētu objekta instances atlasi.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client = ctx.Clients.Single(c =&amp;gt; c.Name.Equals(&lt;span style="color:#a31515;"&gt;&amp;quot;Jānis&amp;quot;&lt;/span&gt;));&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pieņemsim, ka ārpus ielādes konteksta (mainīgais &lt;span style="font-family:Courier New;"&gt;ctx&lt;/span&gt;) ir nepiecie&amp;scaron;ams veikt ielādētā objekta manipulācijas &amp;ndash; rediģē&amp;scaron;anu mainot tā datus un statusu.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;client.Surname = &lt;span style="color:#a31515;"&gt;&amp;quot;Bērziņ&amp;scaron;&amp;quot;&lt;/span&gt;;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Veicot objekta datu modifikāciju, objekta status mainās uz &amp;ldquo;&lt;span style="font-family:courier new;"&gt;Modified&lt;/span&gt;&amp;rdquo;, kas arī ir pareizi un loģiski sagaidāma uzvedība no EF.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/objectstate_5F00_5CEB3098.png"&gt;&lt;img height="335" width="418" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/objectstate_5F00_thumb_5F00_4AA269D6.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Un pēc tam izmantojot citu kontekstu veicam modificētā objekta saglabā&amp;scaron;anu:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.Clients.Attach(client);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.SaveChanges();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pēc objekta pievieno&amp;scaron;anas pie jaunā konteksta redzams, ka tā status tiek uzstādīts pa jaunu uz &amp;ldquo;&lt;span style="font-family:courier new;"&gt;Unmodified&lt;/span&gt;&amp;rdquo;, kas arī atbilst dokumentācijai.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/objectstate2_5F00_0A6C505C.png"&gt;&lt;img height="156" width="471" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/objectstate2_5F00_thumb_5F00_034D13E4.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Lai novērstu &amp;scaron;o nelielu &amp;ldquo;īpatnību&amp;rdquo; EF platformai, nākas nedaudz pasvīst. Pirmāmkārtām jau sameklējot pareizo dokumentāciju par &amp;scaron;o tematu. Galu galā &amp;scaron;ai iespējai ir divi risinājumi. Viens &amp;ndash; &amp;ldquo;pievienot objektu un naturāli pateikt, ka tas ir mainīts, pat īsti neuztraucoties par to, vai ir vai nav mainīts&amp;rdquo;. Kodā tas izskatās apmēram &amp;scaron;ādi:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.Clients.Attach(client);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;ObjectStateEntry&lt;/span&gt; stateEntry = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (ctx2.ObjectStateManager.TryGetObjectStateEntry(client.EntityKey, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; stateEntry))&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stateEntry.ChangeState(&lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt;.Modified);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.SaveChanges();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Scaron;is piegājiens neizskatās diez ko iepriecino&amp;scaron;s un lasāms. Pastāv arī otra iespēja &amp;ndash; &amp;ldquo;ielādēt oriģinālo objekta versiju un izmantojot jaunā objekta versijas datus izmainīt eso&amp;scaron;o&amp;rdquo;. Kodā tas izskatās apmēram &amp;scaron;ādi:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalClient = ctx2.Clients.Single(c =&amp;gt; c.Id == client.Id);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.Clients.ApplyCurrentValues(client);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.SaveChanges();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Scaron;ai pieejai ir daudz uzskatāmās un lasāmāks kods, bet starpība ir tāda, ka &amp;scaron;ī pieeja prasa vēlreiz griezties pie datubāzes, lai iegūtu vēlamā objekta oriģinālās vērtības. Iedomājieties, kas notiek, ja nepiecie&amp;scaron;ams saglabāt lielu un apjomīgu objektu grafu.. ?!&lt;/p&gt;
&lt;p&gt;&amp;Scaron;is piemērs ir pavisam triviāls, bet iedomājieties, kāds kods ir jāuzraksta, lai pareizi saglabātu saites starp objektiem, kas mainīti ārpus konteksta? Jo reti kura reālas dzīves biznesa aplikācija aprobežojas tikai ar vienu objektu un tā īpa&amp;scaron;ību maiņu :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bet pa&amp;scaron;laik noteikti jūs domājat par vienu &amp;ndash; kāda hr*** pēc nepiecie&amp;scaron;ams ielādētu vienību mainīt un saglabāt ārpus saisto&amp;scaron;ā konteksta? Daudzas reizes man nācies mutiski pamatot pielietojuma jēgu un scenāriju. &amp;Scaron;oreiz to darī&amp;scaron;u ar diagrammas palīdzību. Viens no klasiskākajiem scenārijiem, kur rodas &amp;scaron;āda veida pielietojums &amp;ndash; ir no prezentācijas slāņa ielādēta (vai nu sākotnēji vai arī pēc lietotāja manipulāciju veik&amp;scaron;anas) EF objekta nodo&amp;scaron;ana apstrādei kādai no biznesa loģikas slāņa komponentēm. Arhitektūras diagrammā tas izskatās apmēram &amp;scaron;ādi:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/ms978676_5F00_Arc_5F00_DeploymentPlan_5F00_Fig01enusMSDN_5F00_10_5F00_1529A7B1.gif"&gt;&lt;img height="329" width="440" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/ms978676_5F00_Arc_5F00_DeploymentPlan_5F00_Fig01enusMSDN_5F00_10_5F00_thumb_5F00_69E510A9.gif" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Sarkanā bultiņa nozīmē, ka prezentācijas slāņa komponentēm (web lapām vai kādam citam koda fragmentam) klasiskajā scenārijā ir jāparūpējas par sekojo&amp;scaron;ām niansēm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dati jāizgūst no datu avota; &lt;/li&gt;
&lt;li&gt;datus parasti atmiņā reprezentē kādā noteiktā objektu modelī (&amp;scaron;ajā gadījumā &amp;ndash; tas ir EF); &lt;/li&gt;
&lt;li&gt;tie jāparāda klientam jeb sistēmas lietotājam, tātad jāveic iegūto datu attēlo&amp;scaron;ana; &lt;/li&gt;
&lt;li&gt;ja sistēma piedāvā arī atpakaļ saiti prezentācijas slānī ar iespēju veikt arī kādu objektu modifikāciju, tas nozīmē, ka prezentācijas slānim ir jāparūpējas par iegūtu jauno datu sasaisti ar objektu modeli; &lt;/li&gt;
&lt;li&gt;ja sistēma ir veidota pēc labākajām praksēm un vadlīnijām, tad prezentācijas slāņa komponentes neatbildēs par objektu jauno vērtību saglabā&amp;scaron;anu datu bāzē, bet pretēji &amp;ndash; nodos tās kādam zemāk stāvo&amp;scaron;ajam slānim pēcapstrādei; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Scaron;eit arī parādās problēma par ko ir runa &amp;ndash; kā veikt pareizi jauno vērtību saglabā&amp;scaron;anu datubāzē. &amp;Scaron;ai problēmai ir potenciāli vairāki &amp;ldquo;nesmukie&amp;rdquo; risinājumi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ielādes konteksts, caur kuru notiek objektu ielāde, ir vienmēr pieejams visu slāņu komponentēm. Neatkarīgi no tā vai sākotnējā ielāde notiek no biznesa loģikas vai prezentācijas slāņa, visām komponentēm ir pieejams &amp;scaron;is konteksts. Panākt &amp;scaron;ādu iespēju var vai nu &amp;ldquo;vazājot&amp;rdquo; sākotnējo kontekstu visur cauri visiem slāņiem (parasti realizē, kā extra parametru visām nepiecie&amp;scaron;amajām metodēm) vai arī turēt kontekstu kādā no ke&amp;scaron;atmiņas risinājumiem (iedomājieties, kā varētu bez papildus piepūles nodro&amp;scaron;ināt to arī pie mērogojamas (angl. &lt;em&gt;scalable&lt;/em&gt;) vides). &lt;/li&gt;
&lt;li&gt;vai arī izmantojot kādu no augstāk minētajiem paņēmieniem. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tomēr, jaunā EF versija mums piedāvā pilnvērtīgi izmantot T4 (Text Template Transformation Toolkit) iespējas, ko mums piedāvā EF kopā ar VS10 versiju.&lt;/p&gt;
&lt;p&gt;Tātad, viss ko atliek izdarīt &amp;ndash; izveidot &amp;ldquo;Self-Tracking Entities&amp;rdquo; koda ģenerācijas failu.&lt;/p&gt;
&lt;p&gt;Izveicams tas ir spiežot labo peles pogu uz EF modeļa un izvēloties &amp;ldquo;Add Code Generation Item...&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_add_5F00_7BC1A476.png"&gt;&lt;img height="359" width="444" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_add_5F00_thumb_5F00_0993EA72.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Un izvēloties &amp;ldquo;ADO.NET Self-Tracking Entity Generator&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_add2_5F00_495DD0F7.png"&gt;&lt;img height="221" width="441" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_add2_5F00_thumb_5F00_5B3A64C4.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Pēc koda ģeneratora failu pievieno&amp;scaron;anas risinājuma pārlūks (angl. &lt;em&gt;Solution Explorer&lt;/em&gt;) var izskatīties nedaudz dīvaini.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_solution_5F00_explr_5F00_02087B05.png"&gt;&lt;img height="359" width="331" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/t4_5F00_solution_5F00_explr_5F00_thumb_5F00_7AE93E8C.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Redzams, ka pievienojot &amp;scaron;os koda ģeneratora failus ir izveidoju&amp;scaron;ies jauni 2 faili:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SelfTrackingClientDataModel.Context.tt. &amp;Scaron;is fails atbild par konteksta ģenerāciju un visu ar &amp;ldquo;Self-Tracking&amp;rdquo; funkcionalitātes nodro&amp;scaron;inā&amp;scaron;anu saistītām lietām. &lt;/li&gt;
&lt;li&gt;SelfTrackingClientDataModel.tt. &amp;Scaron;is fails nodro&amp;scaron;ina EF modelī eksistējo&amp;scaron;o vienību ģenerāciju, lai tie atbalstītu iebūvēto grāmatvedību un pareizi sadarbotos ar parējām ģenerētajām jaunajām lietām. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kādā no konferencēm atceros, ka bija diskusija par to, vai &amp;scaron;os failus turēt atsevi&amp;scaron;ķi vai panest zem kopējā datu modeļa faila, tādā veidā ilustrējot, ka tie ir neatņemama &amp;scaron;ī objektu modeļa sastāvdaļa. Laikam vēl joprojām ir palikusi vecā versija :)&lt;/p&gt;
&lt;p&gt;Klienta kods pēc savas būtības gandrīz nemaz neizmainās. Lai izmantotu jaunās iespējas un saglabātu izmainītos datus kods ir apmēram &amp;scaron;āds:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.Clients.ApplyChanges(client);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.SaveChanges();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tomēr, kā rāda SQL Profiler, izmaiņas netiek saglabātas datu bāzē. Tas ir saistīts ar to, ka &lt;span style="font-family:courier new;"&gt;ChangeTrackingEnabled&lt;/span&gt; netiek uzstādīts uz &lt;span style="font-family:courier new;"&gt;true&lt;/span&gt; pēc noklusējuma un patiesībā tas arī nav nepiecie&amp;scaron;ams (tas ir saistīts ar objektu de-serializāciju un citām kosmiskām lietām). Tas kas ir nepiecie&amp;scaron;ams, pirms izmaiņu veik&amp;scaron;anas nepiecie&amp;scaron;ams &lt;em&gt;explicity &lt;/em&gt;uzsākt grāmatvedības procesu.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;client.&lt;strong&gt;StartTracking&lt;/strong&gt;();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.Surname = &lt;span style="color:#a31515;"&gt;&amp;quot;Bērziņ&amp;scaron;&amp;quot;&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.&lt;strong&gt;StopTracking&lt;/strong&gt;();&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pēc &amp;scaron;īm izmaiņām, programmas kods strādā kā plānots.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Client&lt;/span&gt; client = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client = ctx.Clients.Single(c =&amp;gt; c.Name.Equals(&lt;span style="color:#a31515;"&gt;&amp;quot;Jānis&amp;quot;&lt;/span&gt;));&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.StartTracking();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.Surname = &lt;span style="color:#a31515;"&gt;&amp;quot;Bērziņ&amp;scaron;&amp;quot;&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.StopTracking();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ctx2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ClientDataEntities&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.Clients.ApplyChanges(client);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx2.SaveChanges();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ja mums EF objektu modelī ir arī kādas saites starp objektiem, to nodro&amp;scaron;inā&amp;scaron;ana ar pareiziem statusiem un tālāka saglabā&amp;scaron;ana uz datu bāzi ir tik pat vienkār&amp;scaron;a kā ar elementārām objekta īpa&amp;scaron;ībām:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;client.StartTracking();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.Surname = &lt;span style="color:#a31515;"&gt;&amp;quot;Bērziņ&amp;scaron;&amp;quot;&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; address = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Address&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Id = &lt;span style="color:#2b91af;"&gt;Guid&lt;/span&gt;.NewGuid(),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Street = &lt;span style="color:#a31515;"&gt;&amp;quot;Miera&amp;quot;&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; House = &lt;span style="color:#a31515;"&gt;&amp;quot;7&amp;quot;&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Client = client&lt;/p&gt;
&lt;p style="margin:0px;"&gt;};&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;address.MarkAsAdded();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;client.StopTracking();&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Atliek tikai pareizi parūpēties par jaunpievienotā objekta stāvokli.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tas arī viss. Tātad jaunās T4 iespējas mums dod pievienot savus koda ģeneratorus, kas veiks nepiecie&amp;scaron;amo darbu. &amp;Scaron;ajā gadījumā pozitīvi ir tas, ka Microsoft darbinieki pa&amp;scaron;i laiž klajā daudz dažādus noderīgus &amp;scaron;ablonus.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=10530" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Entity Framework" scheme="http://dotnet.lv/blogs/vi/archive/tags/Entity+Framework/default.aspx" /><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term="C# 4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/C_2300_+4.0/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>Kopējam pirmkodu ar jauno VS versiju</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/02/28/kop-jam-pirmkodu-ar-jauno-vs-versiju.aspx" /><id>/blogs/vi/archive/2010/02/28/kop-jam-pirmkodu-ar-jauno-vs-versiju.aspx</id><published>2010-02-28T18:29:00Z</published><updated>2010-02-28T18:29:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Katram kārtīgam bloggeim noteikti ir jābūt &lt;a href="http://copysourceashtml.codeplex.com/"&gt;CopySourceAsHtml&lt;/a&gt; vizuālās studijas spraudim, kas ir ļoti noderīgs, kad vēlas pārējai pasaulei pastāstīt par kādu koda fragmentu vai kādu jaunu iespēju to lieliski noformējot ar visām krāsām un atstarpēm.&lt;/p&gt;
&lt;p&gt;Līdz &amp;scaron;im nebija sanācis kaut ko īsti no VS 10 versijas izkopēt un piedāvāt sav&amp;shy;&amp;shy;ā blogā. Rakstot nākamo postu saskāros ar faktu, ka &amp;scaron;is lieliskais spraudnis nemaz nav pieejams priek&amp;scaron; jaunās studijas versijas.&lt;/p&gt;
&lt;p&gt;Neesmu eksperts studijas spraudņos, bet aplūkojot eso&amp;scaron;ā spraudņa konfigurācijas failu, nemaz nevajag divas augstākās izglītības, lai saprastu tā struktūru un mēģinātu vismaz pielāgot eso&amp;scaron;ā spraudņa versiju jaunajai studijai. Nedaudz paspēlējoties ar failu, pāris reizes pārstartējot studiju un secinādams, ka spraudnis nelādējas, nonācu līdz risinājumam.&lt;/p&gt;
&lt;p&gt;Risinājums ir vienkār&amp;scaron;i samainīt vizuālās studijas versijas numuru, kas minēts spraudņa konfigurācijas failā:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/CopySourceAsHtml_5F00_diff_5F00_425E9684.png"&gt;&lt;img height="101" width="509" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/CopySourceAsHtml_5F00_diff_5F00_thumb_5F00_76FEF2BF.png" alt="CopySourceAsHtml_diff" border="0" title="CopySourceAsHtml_diff" style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pēc vizuālās studijas versijas numuru nomaiņas viens no for&amp;scaron;ākajiem mazajiem spraudnī&amp;scaron;iem :) ir ielādējies studijā un pieejams darbam:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/CopySourceAsHtml_5F00_usage_5F00_46889878.png"&gt;&lt;img height="440" width="451" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/CopySourceAsHtml_5F00_usage_5F00_thumb_5F00_7160FC8A.png" alt="CopySourceAsHtml_usage" border="0" title="CopySourceAsHtml_usage" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs un happy copying source as html! :)&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=10523" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term="Add-Ins" scheme="http://dotnet.lv/blogs/vi/archive/tags/Add-Ins/default.aspx" /></entry><entry><title>F# spēka paka</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/02/19/f-sp-ka-paka.aspx" /><id>/blogs/vi/archive/2010/02/19/f-sp-ka-paka.aspx</id><published>2010-02-19T10:59:00Z</published><updated>2010-02-19T10:59:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Nesen laists klajā jauna programmē&amp;scaron;anas valodas F# spēka paka jeb &lt;b&gt;Power Pack&lt;/b&gt;, kas apvieno dažādas interesantas un noderīgas lietas, kuras nav ietvertas standarta valodas bibliotēkās.&lt;/p&gt;
&lt;p&gt;Neliels ieskats power pakas saturā, kas sastāv no vairākām bibliotēkām:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FSharp.PowerPack.dll        
&lt;ul&gt;
&lt;li&gt;Vairākas jaunas maināmi (&lt;i&gt;immutable&lt;/i&gt;, atceramies, ka pēc noklusējuma F# tipi nav maināmi) datu tipi, piemēram, HashMultiMap, kā arī vairākas papla&amp;scaron;inātās metodes, kuras sniedz funkcionālu pieejas interfeisa tādām datu struktūrām, kā piemēram, List&amp;lt;T&amp;gt;. &lt;/li&gt;
&lt;li&gt;Dažādi matemātiskie datu tipi (Vector, Matrix, utt). &lt;/li&gt;
&lt;li&gt;F# SI mērvienību definē&amp;scaron;ana izmantojot mērvienību valodas konstrukciju. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;[&amp;lt;Measure&amp;gt;]      &lt;br /&gt;/// hertz, SI unit of frequency       &lt;br /&gt;type Hz = s^-1&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Kā arī papildinājumus Async programmē&amp;scaron;anai, piemēram, asinhrono I/O papla&amp;scaron;inājumus, kā arī dažādas palīdzības funkcijas. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ir pieejams F# dokumentācijas ģenerators (FsHtmlDoc.exe). &lt;/li&gt;
&lt;li&gt;FSharp.PowerPack.Linq.dll &amp;ndash; piedāvā F# pieeju dažādām .Net 3.5 platformas iespējām.        
&lt;ul&gt;
&lt;li&gt;Konvertātori uz izteiksmju kokiem &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let adderExpr = &amp;lt;@ fun i -&amp;gt; i + 1 @&amp;gt;.ToLinqExpression ()      &lt;br /&gt;let adder = &amp;lt;@ fun i -&amp;gt; i + 1 @&amp;gt;.Compile()&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Pieejams jauns query operators. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let db = new NORTHWND(connString)      &lt;br /&gt;let sameCountry =       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query &amp;lt;@ seq { for e in db.Employees do       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for c in db.Customers do       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if e.Country = c.Country then       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield (e,c) } @&amp;gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FSharp.PowerPack.Parallel.dll &amp;ndash; piedāvā dažādas paralēlās operācijas uz datu kopām, kuras ir jau pieejamas kā bāzes klases .Net 4.0 platformas versijā. &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let nums = [|1..500000|]      &lt;br /&gt;let finalDigitOfPrimes =       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nums       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.filter isPrime       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.groupBy (fun i -&amp;gt; i % 10)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.map (fun (k, vs) -&amp;gt; (k, Seq.length vs))       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.toArray&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Power paka pieejama &amp;scaron;eit - &lt;a title="http://fsharppowerpack.codeplex.com/" href="http://fsharppowerpack.codeplex.com/"&gt;http://fsharppowerpack.codeplex.com/&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;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=10018" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Patterns &amp;amp; Practices" scheme="http://dotnet.lv/blogs/vi/archive/tags/Patterns+_2600_amp_3B00_+Practices/default.aspx" /><category term="F#" scheme="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>Beta 2 –&gt; RC</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/02/12/beta-2-gt-rc.aspx" /><id>/blogs/vi/archive/2010/02/12/beta-2-gt-rc.aspx</id><published>2010-02-12T12:06:00Z</published><updated>2010-02-12T12:06:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/vs10_5F00_rc_5F00_splash_5F00_537567E8.png"&gt;&lt;img height="264" width="376" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/vs10_5F00_rc_5F00_splash_5F00_thumb_5F00_3717FFFB.png" align="right" border="0" style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Pienācis laiks ieboototies savā virtualizētajā Windows 7 image failā un pārinstalēt Visual Studio 2010 Beta 2. Kopsummā pārie&amp;scaron;anas process no Beta 2 versijas uz Release Candiate ritēja diezgan gludi, bet lieliem izaicinājumiem un problēmām, prestatā Beta 1 -&amp;gt; Beta 2 pārie&amp;scaron;anas procesam.&lt;/p&gt;
&lt;p&gt;Secība kādā jādara Beta 2 noņem&amp;scaron;anai ir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2010 Ultimate Edition Beta 2&lt;/li&gt;
&lt;li&gt;Visual Studio 2010 Tools for Office Runtime Beta 2&lt;/li&gt;
&lt;li&gt;Microsoft .Net Framework 4 Extended Beta 2&lt;/li&gt;
&lt;li&gt;Microsoft .Net Framework 4 Client Profile Beta 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pēc VS 10 un .Net 4 noņem&amp;scaron;anas nepiecie&amp;scaron;ama darba stacijas pārstartē&amp;scaron;ana.&lt;/p&gt;
&lt;p&gt;Pēc tam var likt virsū jau RC versiju.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sākam no viena gala pārlukot RC izmaiņas un kļūdu labojumus.. ;)&lt;br /&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=9606" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>VS 2010 RC!</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2010/02/09/vs-2010-rc.aspx" /><id>/blogs/vi/archive/2010/02/09/vs-2010-rc.aspx</id><published>2010-02-09T18:11:16Z</published><updated>2010-02-09T18:11:16Z</updated><content type="html">&lt;div id="post_content"&gt;&lt;p&gt;Notikumi gan ātri attīstās. Ir pieejama jau VS 2010 RC (Release Candidate) versija. Tiesa gan pašlaik tā ir pieejama tikai MSDN abonementiem,&amp;#160; bet vēlāk būs pieejama arī pārējai pasaulei ;) &lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx" target="_blank"&gt;Šeit&lt;/a&gt; var sākt lejupielādi, ja ir MSDN abonements.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gaidām ar nepacietību RTM versiju ;)&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=9427" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term="TFS 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/TFS+2010/default.aspx" /><category term="C# 4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/C_2300_+4.0/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>Happy!</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/12/30/happy.aspx" /><id>/blogs/vi/archive/2009/12/30/happy.aspx</id><published>2009-12-30T13:05:35Z</published><updated>2009-12-30T13:05:35Z</updated><content type="html">&lt;div id="post_content"&gt;&lt;a href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled4_5F00_57699FBB.jpg" rel="lightbox"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="" border="0" alt="" align="right" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled4_5F00_thumb_5F00_77187983.jpg" width="460" height="323" /&gt;&lt;/a&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Priecīgus un jaukus visiem aizgājušos Ziemassvētkus! :)&lt;/p&gt;  &lt;p&gt;Tik pat raženu un vēl raženāku, laimīgu un priecīgu Jauno gadu!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gaidām ar nepacietību jauno gadu un cerams, ka VS10 izlaišanas datums netiks aizbīdīts līdz pat Jāņiem&lt;/p&gt;  &lt;p&gt;Ir plāni šajā sakarā :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers!&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=7288" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Other" scheme="http://dotnet.lv/blogs/vi/archive/tags/Other/default.aspx" /></entry><entry><title>Lietotāju grupai var sekot tvīterī :)</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/12/08/lietot-ju-grupai-var-sekot-tv-ter.aspx" /><id>/blogs/vi/archive/2009/12/08/lietot-ju-grupai-var-sekot-tv-ter.aspx</id><published>2009-12-08T21:06:21Z</published><updated>2009-12-08T21:06:21Z</updated><content type="html">&lt;div id="post_content"&gt;&lt;p&gt;Sakarā ar dažādām tehnoloģiskās iespējām, esam nolēmuši svarīgākos momentus piefiksēt arī tvīterī.&lt;/p&gt;  &lt;p&gt;Latvijas Microsoft .NET tehnoloģiju grupas notikumu un svaigāko jaunu saraksts ir iegūstams &lt;a href="http://twitter.com/dotnetlv" target="_blank"&gt;šeit&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tvīteris atspoguļos jaunākos notikumus, plānotos pasākumus, kā arī vienkārši stāstīts, kas grupā notiek un tiek plānots.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=6359" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Other" scheme="http://dotnet.lv/blogs/vi/archive/tags/Other/default.aspx" /></entry><entry><title>jQuery prezentācijas materiāli</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/11/29/jquery-prezent-cijas-materi-li.aspx" /><id>/blogs/vi/archive/2009/11/29/jquery-prezent-cijas-materi-li.aspx</id><published>2009-11-29T16:23:00Z</published><updated>2009-11-29T16:23:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Sveicins visiem!&lt;/p&gt;
&lt;p&gt;Ir pieejami ir pagāju&amp;scaron;ās .Net lietotāju grupas sanāksmes, kas norisinājās 2009-11-26 Kongresu namā, prezentācijas materiāli par &amp;ldquo;jQuery&amp;rdquo; &lt;a target="_blank" href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi.jquery/jquery_2D00_presentation.zip"&gt;&amp;scaron;eit&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;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5881" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="ASP.NET" scheme="http://dotnet.lv/blogs/vi/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>Html parsētājs</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/11/16/html-pars-t-js.aspx" /><id>/blogs/vi/archive/2009/11/16/html-pars-t-js.aspx</id><published>2009-11-16T06:29:00Z</published><updated>2009-11-16T06:29:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Ja gadījumā, kādreiz nepiecie&amp;scaron;ams kaut ko iesākt ar Html atbildes dokumentu, kas saņemts no kāda servera un mēģināt izanalizēt, cik slikti izstrādātājs drāts otrā galā ir konstruējis Html dokumentu un cik ļoti tas neatbilst visiem standartiem, tad noteikti varu ieteikt &lt;a href="http://htmlagilitypack.codeplex.com/" target="_blank"&gt;Html Agility Pack&lt;/a&gt;, kuram pēdējā beta versija ir parādījusies &amp;scaron;ī gada oktobrī, kas liecina par sava veida dzīvīgumu &amp;scaron;ajā projektā. Nu vismaz nav galīgi palicis novārtā ar atzīmi, ka pēdējās aktivitātes veiktas projekta ziedu laikos kaut kad tālu tālajā 2004. gadā :)&lt;/p&gt;
&lt;p&gt;Pirms uzdevuma izpildes bija doma arī izmantot WatiN projektu, lai darbotos ar atbildes Html dokumentu, bet tomēr biju pa slinku, lai līdz galam izpētīti &amp;scaron;īs platformas iespējas apstrādāt dokumenta atbildi bez IE iesaistī&amp;scaron;anas.&lt;/p&gt;
&lt;p&gt;Html Agility Pack kods izskatās pavisam vienkār&amp;scaron;i. Kopsummā kods neat&amp;scaron;ķiras ne ar ko no parasta Xml dokumenta apstaigā&amp;scaron;anas un struktūras pārlūko&amp;scaron;anas pilnvērtīgi izmantojot XPath iespējas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;HtmlWeb&lt;/span&gt; site = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;HtmlWeb&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; document = site.Load(queryString, &lt;span style="color:#a31515;"&gt;&amp;quot;get&amp;quot;&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; table = document.DocumentNode.SelectNodes(&lt;span style="color:#a31515;"&gt;&amp;quot;html/body/table/tr/td[2]/table/tr&amp;quot;&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;var&lt;/span&gt; row &lt;span style="color:blue;"&gt;in&lt;/span&gt; table)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;var&lt;/span&gt; cell = row.SelectSingleNode(&lt;span style="color:#a31515;"&gt;&amp;quot;td&amp;quot;&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Protams, ir jāuzmanās no nepareizi veidotiem un konstruētiem Html dokumentiem, kuru pārlūko&amp;scaron;ana varētu arī pirmajā piegājienā aizņem mazliet vairāk laika, lai saprastu, kā Html Agility Pack bibliotēkas &amp;scaron;o Html dokumentu ir sapratu&amp;scaron;as.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5403" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Design" scheme="http://dotnet.lv/blogs/vi/archive/tags/Design/default.aspx" /></entry><entry><title>Es sarunājos ar Tevi, Apache!</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/11/15/es-sarun-jos-ar-tevi-apache.aspx" /><id>/blogs/vi/archive/2009/11/15/es-sarun-jos-ar-tevi-apache.aspx</id><published>2009-11-15T14:03:00Z</published><updated>2009-11-15T14:03:00Z</updated><content type="html">&lt;div id="post_content"&gt;   &lt;p&gt;Ir reizes, kad jāpārkāpj sava komforta zona un jāintegrējas ar kaut ko pavismaz *nefamilāru* :) Ir jau nācies darboties ar citu firmu izstrādājumiem, bet tomēr pēdējā laikā ir pārsvarā MS produkti lietošanā tikai.&lt;/p&gt;    &lt;p&gt;Tā nu lūk vienā no projektiem nācās sarunāties ar Apache serveri. Drāts otrā galā atradās RESTful serviss, kas nodrošināja zināmu funkcionalitāti, kuru nepieciešams bija izsaukt no .NET platformas.&lt;/p&gt;    &lt;p&gt;Pirmajā acu uzmetienā izskatās uzdevums pavisam vienkāršs: izveidojam &lt;span style="font-family:courier new;"&gt;WebRequest&lt;/span&gt; klases instanci, saliekam visus nepieciešamos parametrus un iegūstām atbildes plūsmu. Uzdevums pavisam vienkāršs.&lt;/p&gt;    &lt;p&gt;Pirmā mēģinājumā izveidojam visu nepieciešamo support koda bāzi, saliekam nepieciešamās īpašības &lt;span style="font-family:courier new;"&gt;WebRequest&lt;/span&gt; klasei un mēģinām iegūt atbildes plūsmu.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;     &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; requestContent =&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;xml/&amp;gt;&lt;span style="color:#a31515;"&gt;&amp;quot;,&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#a31515;"&gt;&amp;quot;arg1&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;arg2&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;request = &lt;span style="color:#2b91af;"&gt;WebRequest&lt;/span&gt;.Create(&lt;span style="color:#a31515;"&gt;&amp;quot;http://server/service.xml&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;request.Method = &lt;span style="color:#a31515;"&gt;&amp;quot;post&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;request.Credentials = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NetworkCredential&lt;/span&gt; { UserName = &lt;span style="color:#a31515;"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;, Password = &lt;span style="color:#a31515;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; };&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] byteContent = &lt;span style="color:#2b91af;"&gt;Encoding&lt;/span&gt;.ASCII.GetBytes(requestContent);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;request.ContentLength = byteContent.Length;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Stream&lt;/span&gt; stream = request.GetRequestStream();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;stream.Write(byteContent, 0, byteContent.Length);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;stream.Close();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;request.GetResponse();&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Pēc pieprasījuma izpildes, serveris atgriež sekojošu kļūdu: &amp;quot;&lt;b&gt;(501). Not Implemented.&lt;/b&gt;&amp;quot;, kas no HTTP standarta nozīmē, ka serveri ir uzprasīts kaut kas tāds, ko šis nav ar mieru darīt.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Tālāk sekoja vairākas stundas dažādos .NET platformas tumšajos koda bibliotēku nostūros, kas tieši vai netieši atbild par dažāda veida komunikācijas veidiem pa drāti. Beigās pat tika izmēģināts WCF RESTful pašrakstīts klients, kas nemaz nebija tik īss, kodolīgs un vienkāršs, kā apgalvoja raksta autors :)&lt;/p&gt;    &lt;p&gt;Pa vidu pat tika noimplementēts PHP proxy serviss, kas darbojās līdzīgi kā “man in the middle”, pārķerot visus pieprasījumus no .NET platformas un izpildot tos pret gala serveri un atbildi vienkārši forwardējot atpakaļ .NET klientam. Šis risinājums vismaz strādāja, bet tomēr nebiju ar mieru, ka savā zoodārzā ir jāuztur vēl viens dzīvnieciņš. Jautājums bija gluži kā Madagaskaras pingvīniem: “Nu kur jūs esat redzējuši pingvīnus Ņujorkā??”&lt;/p&gt;    &lt;p&gt;Nācās tomēr pētīt tālāk šo problēmu.. Ieejot lieliskajā VS atkļūdošanas un skaņošanas režīmā papētot &lt;span style="font-family:courier new;"&gt;catch()&lt;/span&gt; zaru secinājums ir, ka serveris atgriež sekojošu kļūdu:&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:courier new;"&gt;&amp;quot;Method &amp;lt;xml/&amp;gt;POST is not defined in RFC 2068 and is not supported by the Servlet API&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Parokoties nedaudz pa interneta plašumiem beidzot uzdūros šīs problēmas risinājumam, kas saistīts ar to, ka Apache serverim ir zināmas problēmas dažreiz atbildēt ar pareizo HTTP statusa atbildi. Klients savu pieprasījumu veido ar “Expect: 100-continue” galvenes ierakstu. Ideja šim ierakstam ir, ja serveris būs gatavs apstrādāt šo pieprasījumu, serverim būtu jāatbild ar “100 Continue” atbildi. Ja turpmākie pieprasījumi tiktu atteikti, tad serverim būtu jāatbild ar izbeigšanas atbildi un attiecīgo statusu (&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html" target="_blank"&gt;rfc 2616&lt;/a&gt;).&lt;/p&gt;    &lt;p&gt;Beigu beigās viss beidzas labi un šai problēmai ir risinājums:&lt;/p&gt;    &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;     &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; requestContent =&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;xml/&amp;gt;&lt;span style="color:#a31515;"&gt;&amp;quot;,&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#a31515;"&gt;&amp;quot;arg1&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;arg2&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;request = (&lt;span style="color:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color:#2b91af;"&gt;WebRequest&lt;/span&gt;.Create(&lt;span style="color:#a31515;"&gt;&lt;a href="http://server/service.xml"&gt;http://server/service.xml&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;..&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;strong&gt;request.ServicePoint.Expect100Continue = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;..&lt;/span&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;request.GetResponse();&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Viss ir labi, kas labi beidzas.&lt;/p&gt;    &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5380" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term=".NET3.5" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET3.5/default.aspx" /><category term="Architecture" scheme="http://dotnet.lv/blogs/vi/archive/tags/Architecture/default.aspx" /><category term="Design" scheme="http://dotnet.lv/blogs/vi/archive/tags/Design/default.aspx" /><category term="WCF" scheme="http://dotnet.lv/blogs/vi/archive/tags/WCF/default.aspx" /></entry><entry><title>Analītiķu karš</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/10/30/anal-ti-u-kar.aspx" /><id>/blogs/vi/archive/2009/10/30/anal-ti-u-kar.aspx</id><published>2009-10-30T20:11:37Z</published><updated>2009-10-30T20:11:37Z</updated><content type="html">&lt;div id="post_content"&gt;   &lt;p&gt;Nesen bija izcēlies neliels kariņš par to, ko lietot analītiķiem UML diagrammēšanā firmā, kas ir MS partneris. Galdā tika liktas dažādas kārtis, rīki, domas, prasības un iemesli. Potenciālais risinājums (bet tomēr vēl neapstiprinātais) – vizuālā studija. Ja nu kādam ievajadzēsies kādreiz kādu špikeri pamatojumiem, vai vienkārši trūks ideju, kā nomotivēt firmu iztērēt pāris štukas iso faila, tad here you go why:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;VS10.0 būs pa brīvu anyway (šī ir tikai daļēja patiesība arī partneriem). &lt;/li&gt;      &lt;li&gt;VS10.0 būs rīks, kuru lietos developeri, potenciāli arī testētāji. Kāpēc, lai to nelietotu arī analītiķi un arhitekti? &lt;/li&gt;      &lt;li&gt;Repositorijam vairāk nevajadzētu būt problēmai. Ir pilnvērtīga integrācija ar. Esošais TFS pakļaujas ikdienas backupiem, ir iespējama web pieeja, utt – tā teikt, viss vienā un pierastā veidā. &lt;/li&gt;      &lt;li&gt;Ja UML diagrammas atrodas TFS respositorijā, tas automātiski nozīmē, ka tās tiek versionētas un atsekošana kļūst arvien vieglāka, kurš ko ir mainījis (failu salīdzināšana arī iespējama, jo fails vairs nav binārs). &lt;/li&gt;      &lt;li&gt;Ir potenciāli iespējams veidot work itemus atsaucoties uz pašu diagrammu, ja tas protams ir nepieciešams. Veidot sasaistes ar dažādām prasībām, ja tās tiek uzturētas TFS serverī. &lt;/li&gt;      &lt;li&gt;Ja diagramma būs TFSā, tas nozīmē, ka potenciāli tā arī būs tuvāk developmentam. &lt;/li&gt;      &lt;li&gt;Sadalījums ir pa failiem – viena diagramma ir vienā failā, kas, cik es saprotu no problēmas cēloņa, daudzlietotājus atrisina, kā tas varētu būt citu rīku risinājumos, kur vienā failā ir vairākas diagrammas. &lt;/li&gt;      &lt;li&gt;VS10.0 pašlaik nodrošina sekojošas diagrammas:        &lt;ul&gt;         &lt;li&gt;class diagram &lt;/li&gt;          &lt;li&gt;sequence &lt;/li&gt;          &lt;li&gt;use case &lt;/li&gt;          &lt;li&gt;activity &lt;/li&gt;          &lt;li&gt;component &lt;/li&gt;          &lt;li&gt;layer &lt;/li&gt;          &lt;li&gt;directed graph &lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;      &lt;li&gt;Tas nav tikai analīzes fāzes mistisks orbitāls dokumenta fragments, kura dzīves cikls izbeidzas kopā ar analīzes fāzes beigām – modelēšanas diagrammas dzīvo līdzi kodam un reālai programmatūras attīstības dzīves ciklam. &lt;/li&gt;      &lt;li&gt;Ja visas diagrammas ir vienā solution - pieejams ir arī UML explorer, kas piedāvā sarakstu ar visiem artifaktiem minētiem risinājumā. &lt;/li&gt;      &lt;li&gt;VS10.0 nav tikai UML diagrammas – ir arī arhitektūras diagrammas, kuras varbūt netiek intensīvi izmantotas analīzes fāze, bet noteikti var tikt izmantotas īsi pirms vai izstrādes laikā (konkrēts piemērs par slāņu diagrammu – Layer Diagram). &lt;/li&gt;      &lt;li&gt;Visi analītiķi zina vienu rīku un ir lielāka iespējas resource reusability – iespējama ir lielāka resursu cirkulācija. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled_5F00_0FDC988D.png" rel="lightbox"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="" border="0" alt="" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled_5F00_thumb_5F00_64F40EAD.png" width="440" height="309" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;    &lt;p&gt;Pagaidām mīnusi VS10.0:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Nav izteiktas state-chart diagrammas (var izmantot aktivitāšu diagrammu). &lt;/li&gt;      &lt;li&gt;Pagaidām ir – VS10.0 ir Beta2, kas nozīmē, ka var būt gļuki, bet Beta2 ir ar GO-LIVE licenci, kas savukārt nozīmē, ka veidotās diagrammas varēs migrēt uz VS10.0 RTM versiju. &lt;/li&gt;      &lt;li&gt;Nevar dažas diagrammas izexportēt kā bildi pagaidām (toties smuki kopējas vai arī var veidot screencapture) &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5107" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Architecture" scheme="http://dotnet.lv/blogs/vi/archive/tags/Architecture/default.aspx" /><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /></entry><entry><title>The best place to hide is at the tip of the nose</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/10/28/the-best-place-to-hide-is-at-the-tip-of-the-nose.aspx" /><id>/blogs/vi/archive/2009/10/28/the-best-place-to-hide-is-at-the-tip-of-the-nose.aspx</id><published>2009-10-28T17:55:11Z</published><updated>2009-10-28T17:55:11Z</updated><content type="html">&lt;div id="post_content"&gt;   &lt;p&gt;Nesen sanācis bija darboties ar &lt;a href="http://www.dotnet.lv/blogs/vi/archive/2009/09/08/wcf-zi-ojumu-konduktori.aspx"&gt;WCF ziņojumu inspektoriem&lt;/a&gt; un citām interesantām un varbūt brīžiem nesaistītām lietām.&lt;/p&gt;    &lt;p&gt;Ziņojumu inspektori ir interesanta vieta, kur ievietot savu plumbing code un veikt nepieciešamos vingrojumus pirms pieprasījuma izsūtīšanas otram saņēmējam un pēc atbildes saņemšanas – labākā vieta, kur veikt izejošo un ienākošo ziņojumu žurnalizēšanu.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;     &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;#region&lt;/span&gt; IClientMessageInspector Members&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; AfterReceiveReply(&lt;span style="color:blue;"&gt;ref&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Message&lt;/span&gt; reply, &lt;span style="color:blue;"&gt;object&lt;/span&gt; correlationState)&lt;/p&gt;      &lt;p style="margin:0px;"&gt;{&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// do something&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;object&lt;/span&gt; BeforeSendRequest(&lt;span style="color:blue;"&gt;ref&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Message&lt;/span&gt; request, &lt;span style="color:#2b91af;"&gt;IClientChannel&lt;/span&gt; channel)&lt;/p&gt;      &lt;p style="margin:0px;"&gt;{&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// do something&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;#endregion&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Kods ir ērts, mazs un pārskatāms.&lt;/p&gt;    &lt;p&gt;Problēma rodas apstāklī, ka patiesībā starp šīm abām metodēm ir nepieciešams veikt tā saucamo korelāciju – jeb &lt;font face="Courier New"&gt;BeforeSendRequest&lt;/font&gt; metode veic izejošā ziņojuma žurnalizēšanu (piemēram, INSERT operācijas izpilde kādā Log tabulā) un pēc brītiņa, kad no endpointa ir saņemta atbilde – tiek izsaukta ziņojuma inspektora &lt;font face="Courier New"&gt;AfterReceiveReply&lt;/font&gt; metode, kurai attiecīgi ir jāveic pirmajā metodes izpildes laikā ģenerētā ieraksta modifikācija.&lt;/p&gt;    &lt;p&gt;Pagāja pāris stundas kamēr pāraku MSDN, forumus un citas interesantas vietnes.. :)&lt;/p&gt;    &lt;p&gt;Līdz beidzot izdomāju vēlreiz pārlasīt implementētā interfeisa dokumentāciju, kurā skaidri un gaiši (melns uz balta) stāv rakstīts: tas, ko jūs atgriezīsiet &lt;font face="Courier New"&gt;BeforeSendRequest&lt;/font&gt; metodes rezultātā, tiks padots &lt;font face="Courier New"&gt;AfterReceiveReply&lt;/font&gt; metodei, kā &lt;font face="Courier New"&gt;correlationState&lt;/font&gt; parametrs. Microsoft iesaka šajā vietā izmantot Guid.NewGuid() metodi, lai nodrošinātu, ka konkrētās aktivitātes korelācijas identifikācija ir unikāla :)&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Nu ko, labākā vieta kur paslēpties, ir pašā degungalā :)&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5085" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term=".NET3.5" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET3.5/default.aspx" /><category term="Architecture" scheme="http://dotnet.lv/blogs/vi/archive/tags/Architecture/default.aspx" /><category term="WCF" scheme="http://dotnet.lv/blogs/vi/archive/tags/WCF/default.aspx" /></entry><entry><title>Jaunais treniņa inventārs</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/10/26/jaunais-treni-a-invent-rs.aspx" /><id>/blogs/vi/archive/2009/10/26/jaunais-treni-a-invent-rs.aspx</id><published>2009-10-26T05:34:00Z</published><updated>2009-10-26T05:34:00Z</updated><content type="html">&lt;div id="post_content"&gt;
&lt;p&gt;Līdz ar otrās betas publisko parādī&amp;scaron;anos Microsoft ir laidis klajā arī &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en"&gt;atjauninātu treniņa inventāru&lt;/a&gt; (iepriek&amp;scaron;ējā versija &lt;a href="http://www.dotnet.lv/blogs/vi/archive/2008/11/18/jaunais-terni-a-invent-rs.aspx"&gt;&amp;scaron;eit&lt;/a&gt;), kas noteikti palīdzēs ātrāk un efektīvāk apgūt sekojo&amp;scaron;as tehnoloģijas:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C# 4.0 &lt;/li&gt;
&lt;li&gt;Visual Basic 10 &lt;/li&gt;
&lt;li&gt;F# &lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/VisualStudio_5F00_41865C26.jpg" align="right" border="0" height="103" width="380" alt="" /&gt; &lt;/li&gt;
&lt;li&gt;Parallel Extensions &lt;/li&gt;
&lt;li&gt;Windows Communication Foundation &lt;/li&gt;
&lt;li&gt;Windows Workflow &lt;/li&gt;
&lt;li&gt;Windows Presentation Foundation &lt;/li&gt;
&lt;li&gt;ASP.NET 4 &lt;/li&gt;
&lt;li&gt;Windows 7 &lt;/li&gt;
&lt;li&gt;Entity Framework &lt;/li&gt;
&lt;li&gt;ADO.NET Data Services &lt;/li&gt;
&lt;li&gt;Managed Extensibility Framework &lt;/li&gt;
&lt;li&gt;Visual Studio Team System &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Treniņa inventārs pēc labākajām tradīcijās iekļauj sevī prezentācijas, laboratorijas darbus, kā arī dažādas demonstrācijas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=5034" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term="C# 4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/C_2300_+4.0/default.aspx" /><category term=".NET4.0" scheme="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx" /></entry><entry><title>VS2010 b2</title><link rel="alternate" type="text/html" href="/blogs/vi/archive/2009/10/21/vs2010-b2.aspx" /><id>/blogs/vi/archive/2009/10/21/vs2010-b2.aspx</id><published>2009-10-21T15:42:04Z</published><updated>2009-10-21T15:42:04Z</updated><content type="html">&lt;div id="post_content"&gt;&lt;p&gt;Lasot cauri elektroniskā pasta thread’iem par beta divi instalācijas pieredzi no dažādām pasaules malām (pieredze patiesībā nebija nemaz tik iepriecināšana) tomēr ir izdevies iegūt uz sava VHD-ezētā Windows 7 operētājsistēmas virsū beta divi versiju gaidāmajai jaunai studijai.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled2_5F00_6509AC4F.png" rel="lightbox"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="Untitled2" border="0" alt="Untitled2" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/Untitled2_5F00_thumb_5F00_0AFF5CA6.png" width="554" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tuvākā laikā plānojams atjaunināts skats uz esošajā iespējām no beta viens un jaunievedumiem, kas parādījušies otrajā betā. Kā arī apskatīšu jaunās iespējas, kas ir parādījušās tikai ar otro betas versiju.&lt;/p&gt;  &lt;p&gt;Btw, jaunā beta ir ieguvusi brīnišķīgu infinity logo ar zilganām un violetām krāsām.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Cheers!&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=4960" width="1" height="1"&gt;</content><author><name>valdis.iljuconoks</name><uri>http://dotnet.lv/members/valdis.iljuconoks/default.aspx</uri></author><category term="Visual Studio 2010" scheme="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx" /><category term="Deployment" scheme="http://dotnet.lv/blogs/vi/archive/tags/Deployment/default.aspx" /></entry></feed>