<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Saiku Kaizen &#187; .NET</title>
	<atom:link href="http://www.saiku.ee/kaizen/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.saiku.ee/kaizen</link>
	<description>Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.</description>
	<lastBuildDate>Tue, 22 Jun 2010 18:26:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ReSharper 5</title>
		<link>http://www.saiku.ee/kaizen/2009/11/resharper-5/</link>
		<comments>http://www.saiku.ee/kaizen/2009/11/resharper-5/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:10:42 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Arendus]]></category>
		<category><![CDATA[produktiivsus]]></category>
		<category><![CDATA[ReSharper]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=1013</guid>
		<description><![CDATA[Selle aasta lõpuks peaks välja tulema ReSharper 5 Visual Studio 2008 ja 2010-le. Siiski, kes soovib seda varem juba katsetada, siis on võimalik seda läbi Early Access Programi teha. Selle versiooni suuremad edasiminekud on veebi arendamise osas. Nüüd on võimalik MVC ja tavalise ASP.NET-i peal genereerida vajaminevat koodi ja kiirelt parandada vigasid. Lisaks on seal [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/06/resharper-4/' rel='bookmark' title='Permanent Link: ReSharper 4'>ReSharper 4</a> <small>Viimase kuu olen kasutanud R# 4 öiseid versioone (nightly build),...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/02/t-kiirendamine-resharperi-ja-klaviatuuriga/' rel='bookmark' title='Permanent Link: T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga'>T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga</a> <small>Paljude arendajate jaoks on pärast Re# kasutamist võimatu kasutada Visual...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/07/resharper-mallid/' rel='bookmark' title='Permanent Link: ReSharper mallid'>ReSharper mallid</a> <small>Nagu mõni aeg tagasi sai lubatud, siis panen R# mallid...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Selle aasta lõpuks peaks välja tulema <a href="http://www.jetbrains.com/resharper/documentation/whatsnew_50.html" target="_blank">ReSharper 5</a> Visual Studio 2008 ja 2010-le. Siiski, kes soovib seda varem juba katsetada, siis on võimalik seda läbi <em><a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+Early+Access+Program" target="_blank">Early Access Program</a></em>i teha.</p>
<p>Selle versiooni suuremad edasiminekud on veebi arendamise osas. Nüüd on võimalik MVC ja tavalise ASP.NET-i peal genereerida vajaminevat koodi ja kiirelt parandada vigasid. Lisaks on seal osas ka navigeerimist paremaks tehtud. Veebiarendus hakkab ka nüüd R#5 jaoks olema esmaklassiline kodanik.</p>
<p>Märkimisväärne uuendus on ka koodi analüüsis – võimalik on otsida koodi struktuurilisi/mustrilisi vigasid ehk halbu lõhnu. See on suurepärane töövahend meeskonna koodi ühtlustamise osas ning uute koolitamisel.</p>
<p>Kui Visual Studio 2010 oskab kenasid UML diagramme luua, siis R#5 seevastu näitab lihtsamalt, kuidas väärtused või meetodi väljakutsed aset leiavad. See kiirendab oluliselt koodist arusaamist (juhul kui pole üks suur kauss spagette).</p>
<p>Väiksemate väärtuste hulka võiksid kuuluda koodiviited (bookmark) ja ka <em>NUnit</em>i integratsioon. Rohkemat infot leiate R# <a href="http://www.jetbrains.com/resharper/documentation/whatsnew_50.html" target="_blank">uuenduste nimekirjast</a>.</p>
<p>Kellel suurem huvi koodi kirjutamise produktiivsuse tõstmise katsetamiseks on, võiksid heita ka pilgu peale <a href="http://www.telerik.com/products/justcode.aspx" target="_blank">Telerik JustCode</a>ile, kuigi sellel on vähem võimalusi. Oleks tore ka kuulda, mis teile uues R# meele järgi on ja mis puudujääke on.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/06/resharper-4/' rel='bookmark' title='Permanent Link: ReSharper 4'>ReSharper 4</a> <small>Viimase kuu olen kasutanud R# 4 öiseid versioone (nightly build),...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/02/t-kiirendamine-resharperi-ja-klaviatuuriga/' rel='bookmark' title='Permanent Link: T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga'>T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga</a> <small>Paljude arendajate jaoks on pärast Re# kasutamist võimatu kasutada Visual...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/07/resharper-mallid/' rel='bookmark' title='Permanent Link: ReSharper mallid'>ReSharper mallid</a> <small>Nagu mõni aeg tagasi sai lubatud, siis panen R# mallid...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/11/resharper-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Modernne tarkvara loomine VI: Uuendused v&#245;luv&#228;el</title>
		<link>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vi-uuendused-voluvael/</link>
		<comments>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vi-uuendused-voluvael/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 09:55:25 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Arendus]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[pidev integratsioon]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=992</guid>
		<description><![CDATA[Tarkvara arendamine on pidev tegevus; pidevalt ilmuvad uuendused ja vigade parandused. Kõik see on meeldiv, kuid uuendamine alati pole, eriti kui peab vana maha võtma ja uue paigaldama. Kerkivad mõned küsimused: kas seadistused jäävad alles? kas kõik seaded on varundatud? Palju meeldivam on see, kui rakendus imeväel ennast uuendab ja ise midagi tegema ei pea. [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vii-logimine-voi-blogimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?'>Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?</a> <small>Küllaltki tüüpiliseks peetakse rakenduse vigade logimist. Proovitakse kasutada Aspect Oriented...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iv-andmete-kuhveldamine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine IV: Andmete k&uuml;hveldamine'>Modernne tarkvara loomine IV: Andmete k&uuml;hveldamine</a> <small>Pea iga rakendus vajab andmete salvestamist, eriti nö andmepõhised rakendused....</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-v-mitu-kasutajakontot-sul-on/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine V: Mitu kasutajakontot sul on?'>Modernne tarkvara loomine V: Mitu kasutajakontot sul on?</a> <small>Väga lihtne küsimus teile: mitu kasutajakontot sul kokku on? Ma...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tarkvara arendamine on pidev tegevus; pidevalt ilmuvad uuendused ja vigade parandused. Kõik see on meeldiv, kuid uuendamine alati pole, eriti kui peab vana maha võtma ja uue paigaldama. Kerkivad mõned küsimused: kas seadistused jäävad alles? kas kõik seaded on varundatud? Palju meeldivam on see, kui rakendus imeväel ennast uuendab ja ise midagi tegema ei pea. Nii toimivad paljud töölaua rakendused praegu, kuid samalaadselt võiksid ka meie klient-server rakendused uueneda.</p>
<p>Peamiselt on meil vaja uus kood kokku kompileerida, lisada talle uus versiooni number, andmebaasi skeem uuendada ja andmete kohandada. Väga palju polegi. Automatiseerimiseks sobivad lihtsad skriptid: kõige algupärasem variant oleks teha konsooli skript, kuid selleks peame väga hästi tundma iga kasutatava rakenduse parameetrite süntaksit.</p>
<p><span id="more-992"></span></p>
<p>Java maailmast on tuntud võlujoogid <a href="http://ant.apache.org/" target="_blank">Ant</a>, <a href="http://maven.apache.org/" target="_blank">Maven</a> ning Ruby tulekuga <a href="http://raven.rubyforge.org/" target="_blank">Raven</a> ja <a href="http://buildr.apache.org/" target="_blank">Buildr</a>. Ant oli esimesi selliseid, millega kokku puutusin ning üleminekul .NET-i peale oli loomulik valik <a href="http://nant.sourceforge.net/" target="_blank">NAnt</a>. Nüüdseks on alternatiive tekkinud <a href="http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx" target="_blank">MSBuild</a>-i ja <a href="http://code.google.com/p/psake/" target="_blank">PSake</a> (PowerShell) näol. Siiski on mind väga kütkestanud Ruby keelelised võimalused ning <a href="http://rake.rubyforge.org/" target="_blank">Rake</a>-i kasutamine .NET asjade jaoks ei ole probleemne.</p>
<p>Nende kõigi eesmärgiks on luua skript, mis pakendab rakenduse kenasti kokku ühe nupu vajutusega. Kuna olen veidi väsinud XML-ist, siis liigun vaikselt Rake poole. <a href="http://www.saiku.ee/kaizen/2009/05/miks-mulle-rake-meeldib/" target="_blank">Varajasemalt sai kirjutatud, miks see mulle nii väga meeldib</a> ning <a href="http://github.com/marektihkan/Arc/blob/master/Arc/RakeFile" target="_blank">vastava skripti võite leida GitHubist</a> ja <a href="http://github.com/marektihkan/Arc/tree/master/Arc/Configuration/Build/Rake/" target="_blank">vajamineva koodi sellest kataloogist</a>. See ei ole seal täiuslik, vaid eksperiment, mida tuleks edasi viia. Kellel on huvi mind selles vallas aida, siis andke teada.</p>
<p>Lisaks eelnevale rakenduse pakendamisel on tihti suur soov näha, kas testid läbivad ning analüüsida koodi kvaliteeti. Välistatud pole ka API dokumenteerimine. Kui nii palju tööd on juba tehtud, siis poleks enam keeruline pideva integratsiooni server seadistada ning veelgi rohkem kasu lõigata. Vastavaid servereid on palju: <a href="http://ccnet.thoughtworks.com/" target="_blank">CruiseControl.NET</a> (<a href="http://github.com/marektihkan/CC.NET-Kaizen-theme" target="_blank">uued mallid 1.5 CTP jaoks leiate GitHub-ist</a>), <a href="http://cruisecontrol.sourceforge.net/" target="_blank">CruiseControl</a>, <a href="http://hudson-ci.org/" target="_blank">Hudson</a>, <a href="http://phpundercontrol.org/" target="_blank">PHPUnderControl</a>, <a href="http://www.jetbrains.com/teamcity/index.html" target="_blank">TeamCity</a>…</p>
<p>Kogemusest soovitan kohe algusest peale hoida keskkonna poolsed seaded eraldi kohas ning neid vastavalt ka sisse laadida. Teine hea soovitus on jagada skriptid loogilisteks tükkideks, sest nii on võimalik vastavad skriptid teha lihtsamini uuestikasutatavateks. Suure tõenäosusega loome rohkem kui ühe veebipõhise vms rakenduse. Ajapikku on mul tekkinud NAnti skriptid, mida saab suhteliselt lihtsalt ümber majandada ning neid võite <a href="http://github.com/marektihkan/Arc/tree/master/Templates/ArcWizard/Templates/Web.MVC/Configuration/Build/" target="_blank">leida järgnevast GitHub-i kataloogist</a>. See võib lihtsustada nii mõnegi tööriistaga sidumise. Kui kellelgi veel sarnaseid skripte kuskil peidus on, siis oleks tore, kui avaldaksite need.</p>
<p>Väärtuslikku lisa võib leida <a href="http://www.amazon.com/dp/0321336380" target="_blank">Paul Duvalli, Steve Matyase ja Andrew Gloveri raamatust “Continuous Integration: Improving Software Quality and Reducing Risk”</a>. See raamat räägib kogu protsessi elementidest küllaltki detailselt.</p>
<p>Kui kõik vajalik on seadistatud, siis tuleb hoiduda järgneva tigeda grupeeringu eest: <a href="http://www.buildsonmymachine.com/" target="_blank">Phyllis</a>, <a href="http://www.youbrokethebuild.com/" target="_blank">Agnes</a> ja <a href="http://www.wheresthebuild.com/" target="_blank">Gladys</a>. Ühe nupu vajutusega rakenduse pakendamine ja paigaldamine hoiab kõvasti aega kokku ja on stressivabam. Tasub vähemalt proovimist.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vii-logimine-voi-blogimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?'>Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?</a> <small>Küllaltki tüüpiliseks peetakse rakenduse vigade logimist. Proovitakse kasutada Aspect Oriented...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iv-andmete-kuhveldamine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine IV: Andmete k&uuml;hveldamine'>Modernne tarkvara loomine IV: Andmete k&uuml;hveldamine</a> <small>Pea iga rakendus vajab andmete salvestamist, eriti nö andmepõhised rakendused....</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-v-mitu-kasutajakontot-sul-on/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine V: Mitu kasutajakontot sul on?'>Modernne tarkvara loomine V: Mitu kasutajakontot sul on?</a> <small>Väga lihtne küsimus teile: mitu kasutajakontot sul kokku on? Ma...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vi-uuendused-voluvael/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modernne tarkvara loomine IV: Andmete k&#252;hveldamine</title>
		<link>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iv-andmete-kuhveldamine/</link>
		<comments>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iv-andmete-kuhveldamine/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 06:10:20 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Analüüs/Arhitektuur]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=979</guid>
		<description><![CDATA[Pea iga rakendus vajab andmete salvestamist, eriti nö andmepõhised rakendused. Seetõttu tuleb meil siduda rakendused andmebaasiga ning võimalusi selleks on mitmeid. Küllaltki tüüpiline on alguses kasutada andmebaasi lähedast mudelit. Ehitada ise andmete vahetuskiht ja teha DataAccess objekte. Sellise lähenemisega kaasneb hulgaliselt andmekihi kirjutamist, tihti on see lausa 80% projekti mahust ning pärast kolmandat korda tundub, [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vii-logimine-voi-blogimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?'>Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?</a> <small>Küllaltki tüüpiliseks peetakse rakenduse vigade logimist. Proovitakse kasutada Aspect Oriented...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iii-andmebaasi-versioonimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine III: Andmebaasi versioonimine'>Modernne tarkvara loomine III: Andmebaasi versioonimine</a> <small>Koodi versioonime on küllaltki elementaarne nähtus (jah, mõned tõesti ei...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vi-uuendused-voluvael/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VI: Uuendused v&otilde;luv&auml;el'>Modernne tarkvara loomine VI: Uuendused v&otilde;luv&auml;el</a> <small>Tarkvara arendamine on pidev tegevus; pidevalt ilmuvad uuendused ja vigade...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Pea iga rakendus vajab andmete salvestamist, eriti nö andmepõhised rakendused. Seetõttu tuleb meil siduda rakendused andmebaasiga ning võimalusi selleks on mitmeid.</p>
<p>Küllaltki tüüpiline on alguses kasutada andmebaasi lähedast mudelit. Ehitada ise andmete vahetuskiht ja teha <em>DataAccess</em> objekte. Sellise lähenemisega kaasneb hulgaliselt andmekihi kirjutamist, tihti on see lausa 80% projekti mahust ning pärast kolmandat korda tundub, et pidevalt on loodud sama koodi. Oren Eini (Ayende Rahien) ühes ettekandeski ütles, et see on lahendatud probleem ning sellele vastu vaielda väga mõistlik pole.</p>
<p><span id="more-979"></span></p>
<p>Mõnigi ettevõtte on otsustanud mingi ajahetk, et tuleb luua enda raamistik andmete vahetamiseks ning kulutanud selle arendamiseks palju aega. Tõesti on tore, kui on võim raamistiku üle, kuid kas see siiski tasub ära? Tuletades enda töökäigu algust meelde, siis tõesti sai paar rakendust tehtud nii, et andmekiht sai ehitatud ise. Pärast <a href="http://java.sun.com/javaee/technologies/persistence.jsp" target="_blank">Java Persistence API</a> ja <a href="http://nhforge.org/" target="_blank">NHibernateiga</a> tutvumist ei näinud enam põhjusi tagasiminekuks. NHibernate-i kasutatakse .NET maastikul päris palju ning tehniline tugi on küllaltki suur – kirjuta ainult enda probleem Googlesse ja vastus ei ole kauge tulema.</p>
<p>NHibernate on <em>Object Relational Mapper</em> (<em>ORM</em>), mille ülesandeks on siduda andmebaas objektmudeliga. Selle tulemusena saame peamiselt tegeleda objektidega ja see tundub täiesti mõistlik lähenemine. NHibernate on algselt ületoodud java poolsest raamistikust Hibernate, mis tundub olevat sealsel maastikul vägagi populaarne; PHP-s olen kokku puutunud <a href="http://www.doctrine-project.org/" target="_blank">Doctrine</a> ja <a href="http://propel.phpdb.org/" target="_blank">Propeli</a> nimelise raamistikuga; .NET maailmas on võimalik kasutada ka Microsofti enda toodangut <a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank">Entity Framework</a>, mille esimene versioon sai kommuuni poolt tugeva kriitika, kuid vaadates tema tulevikku, siis tundub see paranevat ja võib olla on ka alternatiiviks tulevaste projektide puhul.</p>
<p>Peamiselt kasutatakse ORM-e rikkaliku objektmudeli puhul ning paljud veebirakendused on väga lihtsa ülesehitusega, millest tulenevalt on see veidi ülepaisutatud (siiski kasutaksin pigem ORM-i, kui hakkaksin ise tegelema andmebaasi kihi loomisega). Lihtsamate mudelite puhul on alternatiiviks <a href="http://martinfowler.com/eaaCatalog/activeRecord.html" target="_blank">Active Record muster</a>, kus äriobjekt sisaldab ka päringuid ja salvestamist, kustutamist. Selle mustri headeks näideteks on <a href="http://ar.rubyonrails.org/" target="_blank">Ruby on Railsi ActiveRecord</a> ja ka NHibernate-i peale loodud <a href="http://www.castleproject.org/activerecord/index.html" target="_blank">Castle ActiveRecord</a> ning ka <a href="http://subsonicproject.com" target="_blank">SubSonic</a>.</p>
<p>Raamistik, mille osas ma head seisukohta ei oska võtta on <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx" target="_blank">LINQ to SQL</a>, mis XML kaardistamise puhul on päris kasutatav. Natukene oli probleeme POCO saavutamiseks, kuid see ei olnud väga valus.</p>
<p>Väikeseks vahepalaks küsiks neilt, kes on oma ettevõttes loonud mõne sarnase asja või arendanud mõnda andmekihi raamistikku, miks need väljapakutud variandi ei ole sobilikud? Olen kuulnud, et üks pühjus on see, et genereeritud SQL päringud ei ole väga head, kuid arvesse võttes keskmise arendaja tugevust selles, siis panustaksin ikkagi siinpuhul esimesele poolele. Teine põhjus võiks olla kiiruse probleemid, kuid see on lahendatav riistvara juurde ostmisega, sest arendajad on kallimad kui riistvara ning pole ka mingisugust garantiid, et tulevane raamistik kiire on. Kolmandaks põhjuseks võiks tuua, et XML on paha, kuid Ruby on Railsi ActiveRecord minu teadmist mööda ei kasutagi mingit seadistust ja NHibernate’i puhul saab kasutada <a href="http://fluentnhibernate.org/" target="_blank">FluentNHibernate</a>’i, mis suures osas võib seadistuse automaatselt ära teha.</p>
<p>Ise olen Oren Einiga nõus, et see on lahendatud probleem. Võime küll luua alternatiivseid lähenemisnurki, kuid ilma suurema põhjuseta ei pole küll mõistlik oma andmekihi raamistikku looma hakata. Võite vürtsitada seda postitust kirjutades kommentaaridesse enda sõjasaagasid.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vii-logimine-voi-blogimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?'>Modernne tarkvara loomine VII: Logimine v&otilde;i blogimine?</a> <small>Küllaltki tüüpiliseks peetakse rakenduse vigade logimist. Proovitakse kasutada Aspect Oriented...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iii-andmebaasi-versioonimine/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine III: Andmebaasi versioonimine'>Modernne tarkvara loomine III: Andmebaasi versioonimine</a> <small>Koodi versioonime on küllaltki elementaarne nähtus (jah, mõned tõesti ei...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-vi-uuendused-voluvael/' rel='bookmark' title='Permanent Link: Modernne tarkvara loomine VI: Uuendused v&otilde;luv&auml;el'>Modernne tarkvara loomine VI: Uuendused v&otilde;luv&auml;el</a> <small>Tarkvara arendamine on pidev tegevus; pidevalt ilmuvad uuendused ja vigade...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/11/modernne-tarkvara-loomine-iv-andmete-kuhveldamine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Maailmad on erinevad: Model-View-Controller</title>
		<link>http://www.saiku.ee/kaizen/2009/10/maailmad-on-erinevad-model-view-controller/</link>
		<comments>http://www.saiku.ee/kaizen/2009/10/maailmad-on-erinevad-model-view-controller/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 06:25:52 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Analüüs/Arhitektuur]]></category>
		<category><![CDATA[Joomla!]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=938</guid>
		<description><![CDATA[Üks populaarsemaid kasutajaliides loomise mustreid veebirakenduste juures on Model-View-Controller ehk lühidalt MVC. Seda kohtame nii PHP, .NET, Ruby ja Java maailmas, kuid mõnes neist võib lähenemisnurk olla veidi erinev. Liigume edasi nüüd mustri lahkamise juurde: Model –  Selle all mõeldakse tihtipeale ärimudelit, mis pole kõige valem, kuid parem oleks mõelda vaatemudelit. Põhjus on selleks lihtne [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/10/modernselt-tarkvara-loomine-i-sissejuhatus/' rel='bookmark' title='Permanent Link: Modernselt tarkvara loomine I: Sissejuhatus'>Modernselt tarkvara loomine I: Sissejuhatus</a> <small>Modernse tarkvara all mõtlen ma peamiselt veebipõhiseid klient – server...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/08/appi-mu-rakenduses-on-mitu-mudelit/' rel='bookmark' title='Permanent Link: Appi, mu rakenduses on mitu mudelit!'>Appi, mu rakenduses on mitu mudelit!</a> <small>Läbi aegade on mudelid aidanud meil probleeme lahendada. Enne Bohri...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/10/modernselt-tarkvara-loomine-ii-seotud-paelad/' rel='bookmark' title='Permanent Link: Modernselt tarkvara loomine II: Seotud paelad'>Modernselt tarkvara loomine II: Seotud paelad</a> <small>Enne jooksmist tasub paelad kinni siduda, siiani on see hea...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Üks populaarsemaid kasutajaliides loomise mustreid veebirakenduste juures on <em>Model-View-Controller</em> ehk lühidalt MVC. Seda kohtame nii PHP, .NET, Ruby ja Java maailmas, kuid mõnes neist võib lähenemisnurk olla veidi erinev.</p>
<p>Liigume edasi nüüd mustri lahkamise juurde:</p>
<ul>
<li><em>Model </em>–  Selle all mõeldakse tihtipeale ärimudelit, mis pole kõige valem, kuid parem oleks mõelda vaatemudelit. Põhjus on selleks lihtne – vaates võivad olla spetsiifilised väärtused kuvamise jaoks olla (n: mõne elemendi CSS klass) ning need ei peaks olema ärimudeli küljes. Lisaks võiks see sarnaneda võimalikult <em>Data Transfer Object</em>ile, mille teisendab <em>Controller</em> ärimudelist. Sel puhul ei peaks muretsema selle üle, et kui mingit meetodit või atribuuti kutsuda ei hakata andmebaasi vms kallale minema.</li>
<li><em>View</em> – Peamiselt HTML vaade kus seotakse andmed malliga. Teisisõnu lõpptulemus, mida kasutaja näeb.</li>
<li><em>Controller</em> – Küsib andmehoidlast vastava ärimudeli, käivitab vastavad äriprotsessid ja teisendab tulemuse vaatemudeliks ning kuvab vaate.</li>
</ul>
<p><span id="more-938"></span></p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="mvc" src="http://www.saiku.ee/kaizen/wp-content/uploads/2009/10/mvc.png" alt="mvc" width="400" height="250" /></p>
<p>Tekkis väike kokkupuude Joomla!-ga ning ka seal on välja hõigatud, et kasutatakse MVC-d. Kõik tundus mõnus kuni reaalselt koodi tuli kirjutama hakata, sest sellega pandi mu arusaam mustrist kahtluse alla. Modeli tähendab seal hübriidi vaatemudelist ja andmehoidlast. Siinkohal võiksime apelleerida <em>ActiveRecord</em>i mustrile, et päringud ongi mudeliga koos, kuid siiski tegemist on vaatemudeliga ning reaalne ärimudel võiks olla sealne <em>JTable</em> objekt.</p>
<p>Järgmine oluline samm komponendi loomisel on <em>Controller</em>i loomine, mis oli vägagi sarnane mu enda arusaamaga. Siiski väheke häiris mind see, et <em>entry point</em> tuli ise luua, mis võiks tähendada reaalselt <em>FrontController</em>it. Veidi mõistlikum viis oleks kasutada viidete reegleid (<em>routing</em>) <em>Controller</em>ite loomisel. Õnneks seal saab kasutada ühte ja sama faili erinevate komponentide tegemisel ning ise ei ole vaja väga leiutada.</p>
<p><em>Controller</em>i üks ülesanne on valida välja õige vaade (<em>View</em>). Vaated on tavaliselt HTML mallid, kuid sel puhul oli PHP fail ning vajas veel toimetamist. ASP.NET maailmas oleks samaväärne <em>Code Behind</em> fail, mis kahjuks oli tihtipeale prügikasti rolliga. Vaade laadis omakorda sisse reaalse malli (<em>Template</em>, <em>Layout</em>), mis kandis vaate tegelikke ülesandeid.</p>
<p>Segadust oli palju mustri väänamisega, kuid ei saa öelda, et see halvasti tehtud oleks, sest ma ei mõista veel kõiki tagamaid, mis otsuste langetamisel arvesse võeti. Soovitan teistel, kes loovad mõnda sarnaseloomulist raamistikku, siis kasutada mustreid nii nagu nad üldtuntuses on. Mustrite ülesanne on vähendada probleemi kirjeldamist ja lahendamist.</p>
<p>Loodetavasti mu kogemus aitab teil lihtsamini tutvust teha Joomla!-ga.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/10/modernselt-tarkvara-loomine-i-sissejuhatus/' rel='bookmark' title='Permanent Link: Modernselt tarkvara loomine I: Sissejuhatus'>Modernselt tarkvara loomine I: Sissejuhatus</a> <small>Modernse tarkvara all mõtlen ma peamiselt veebipõhiseid klient – server...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/08/appi-mu-rakenduses-on-mitu-mudelit/' rel='bookmark' title='Permanent Link: Appi, mu rakenduses on mitu mudelit!'>Appi, mu rakenduses on mitu mudelit!</a> <small>Läbi aegade on mudelid aidanud meil probleeme lahendada. Enne Bohri...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/10/modernselt-tarkvara-loomine-ii-seotud-paelad/' rel='bookmark' title='Permanent Link: Modernselt tarkvara loomine II: Seotud paelad'>Modernselt tarkvara loomine II: Seotud paelad</a> <small>Enne jooksmist tasub paelad kinni siduda, siiani on see hea...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/10/maailmad-on-erinevad-model-view-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CruiseControl.NET uue v&#228;limuse tulevik</title>
		<link>http://www.saiku.ee/kaizen/2009/08/cruisecontrol-net-uue-valimuse-tulevik/</link>
		<comments>http://www.saiku.ee/kaizen/2009/08/cruisecontrol-net-uue-valimuse-tulevik/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 12:54:18 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[Cruise Control.NET]]></category>
		<category><![CDATA[pidev integratsioon]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=775</guid>
		<description><![CDATA[Uue välimuse arendamine on tegusalt läinud ning sain ka soojasid kommentaare ja head kriitikat CruiseControl.NET arendajatelt. Kuna see nägi nende jaoks piisavalt ahvatlev välja, siis peaks see välimus olema ka 1.5 väljalaskes sees ning võib-olla ka vaikimisi valitud. Mul on äärmiselt hea meel, et saan kasulik olla ja teha ühte head toodet veel paremaks. Kuna [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/07/cruisecontrol-net-uus-ja-ilus-nagu/' rel='bookmark' title='Permanent Link: CruiseControl.NET uus ja ilus n&auml;gu'>CruiseControl.NET uus ja ilus n&auml;gu</a> <small>Täna on mul hea uudis CruiseControl.NET kasutajatele. Kunagi alustasin selle...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/cruise-control-net-uus-nagu/' rel='bookmark' title='Permanent Link: Cruise Control.NET uus nägu'>Cruise Control.NET uus nägu</a> <small>Viimasel ajal olen parajalt aega kulutanud Cruise Control.NET raportite lehe...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/vahem-paringuid-aspnet-ga/' rel='bookmark' title='Permanent Link: Vähem päringuid ASP.NET-ga'>Vähem päringuid ASP.NET-ga</a> <small>.NET 3.5 Service Pack 1-ga tuli ASP.NET lehtedele juurde võimalus...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Uue välimuse arendamine on tegusalt läinud ning sain ka soojasid kommentaare ja head kriitikat CruiseControl.NET arendajatelt. Kuna see nägi nende jaoks piisavalt ahvatlev välja, siis peaks see välimus olema ka 1.5 väljalaskes sees ning võib-olla ka vaikimisi valitud. Mul on äärmiselt hea meel, et saan kasulik olla ja teha ühte head toodet veel paremaks.</p>
<p>Kuna 1.5 ei tule kohe välja (praeguste andmete järgi oktoobris), siis jagan teiega vahepealseid tulemusi, et saaksite tagasisidet anda, kuidas muuta kvaliteedi kontrollimine tõhusamaks.</p>
<p>  <span id="more-775"></span>
<p>Vahepealsed uuendused:</p>
<ul>
<li>Administraatori mallid said valmis. </li>
<li>Projektide filtreerimine täiustus:      <br />Automaatselt jagatakse projektid 3 gruppi: aktiivsed, mitteaktiivsed (projektid, mida pole 7 päeva <em>build</em>itud) ja kinni pandud.       <br />Kuna mõnedel inimestel on 300+ projekti nagu tuli välja CC.NET <em>mailinglist</em>is, siis nime järgi otsimine tõhustab jõudsasti projektide haldamist. </li>
<li>Projektivaates kollased projektid on need, mida hetkel ehitatakse. </li>
<li>Muudatuste ajaloo mall sai kokku viidud uue kujundusega. </li>
<li>Muudatuste malli värvikriteerium sai muudetud: alla 20 muudatuse on korras; 20-40 annab märku, et peaks midagi ette võtma; üle 40 on problemaatiline. See põhineb printsiibil, et integreerida tuleks tihedalt, kuid numbrite osas praegu pole erilist analüüsi tehtud, seega soovi korral võite pakkuda paremaid numbreid enda reaalsusest. </li>
<li>Abi sektsioon sai lisatud: viide lokaalsele CC.NET dokumentatsioonile ja kiirklahvide nimeloend. </li>
<li>Uue vaate pakendamine sai ka paremaks muudetud. </li>
</ul>
<p>Edasised plaanid:</p>
<ul>
<li>Integreerida CC.NET 1.5-ga </li>
<li>Projekti graafikute mall valmis teha </li>
<li>Raporteid juurde lisada </li>
</ul>
<p>Kes soovib seda praegu enda pideva integratsiooni serverile lisada, siis saate selle alla laadida <a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/08/ccnet_dashboard_preview2.rar" target="_blank">siit</a>.</p>
<p>Head kvaliteedi parandamist.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/07/cruisecontrol-net-uus-ja-ilus-nagu/' rel='bookmark' title='Permanent Link: CruiseControl.NET uus ja ilus n&auml;gu'>CruiseControl.NET uus ja ilus n&auml;gu</a> <small>Täna on mul hea uudis CruiseControl.NET kasutajatele. Kunagi alustasin selle...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/cruise-control-net-uus-nagu/' rel='bookmark' title='Permanent Link: Cruise Control.NET uus nägu'>Cruise Control.NET uus nägu</a> <small>Viimasel ajal olen parajalt aega kulutanud Cruise Control.NET raportite lehe...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/vahem-paringuid-aspnet-ga/' rel='bookmark' title='Permanent Link: Vähem päringuid ASP.NET-ga'>Vähem päringuid ASP.NET-ga</a> <small>.NET 3.5 Service Pack 1-ga tuli ASP.NET lehtedele juurde võimalus...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/08/cruisecontrol-net-uue-valimuse-tulevik/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CruiseControl.NET uus ja ilus n&#228;gu</title>
		<link>http://www.saiku.ee/kaizen/2009/07/cruisecontrol-net-uus-ja-ilus-nagu/</link>
		<comments>http://www.saiku.ee/kaizen/2009/07/cruisecontrol-net-uus-ja-ilus-nagu/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 05:56:45 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Cruise Control.NET]]></category>
		<category><![CDATA[pidev integratsioon]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=660</guid>
		<description><![CDATA[Täna on mul hea uudis CruiseControl.NET kasutajatele. Kunagi alustasin selle veebiliidese ümberdisainimist ja nüüd võtsin selle uuesti käsile ning see on nii palju valmis, et võiksite katsetada. Mida see juurde annab? Üks suuri puudusi CCNET-is oli see, et projekti viimase buildi raporti juurde jõudmiseks tuli meeletult hiirega navigeerida. Palju lihtsam on vajutada näiteks 1, L. [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/09/cruise-control-net-uus-nagu/' rel='bookmark' title='Permanent Link: Cruise Control.NET uus nägu'>Cruise Control.NET uus nägu</a> <small>Viimasel ajal olen parajalt aega kulutanud Cruise Control.NET raportite lehe...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/08/cruisecontrol-net-uue-valimuse-tulevik/' rel='bookmark' title='Permanent Link: CruiseControl.NET uue v&auml;limuse tulevik'>CruiseControl.NET uue v&auml;limuse tulevik</a> <small>Uue välimuse arendamine on tegusalt läinud ning sain ka soojasid...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/vahem-paringuid-aspnet-ga/' rel='bookmark' title='Permanent Link: Vähem päringuid ASP.NET-ga'>Vähem päringuid ASP.NET-ga</a> <small>.NET 3.5 Service Pack 1-ga tuli ASP.NET lehtedele juurde võimalus...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Täna on mul hea uudis <a href="http://confluence.public.thoughtworks.org/display/CCNET" target="_blank">CruiseControl.NET</a> kasutajatele. <a href="http://www.saiku.ee/kaizen/2008/09/cruise-controlnet-uus-nagu/">Kunagi alustasin selle veebiliidese ümberdisainimist</a> ja nüüd võtsin selle uuesti käsile ning see on nii palju valmis, et võiksite katsetada. </p>
<p> <span id="more-660"></span><br />
<h2>Mida see juurde annab?</h2>
<p>Üks suuri puudusi CCNET-is oli see, et projekti viimase <em>build</em>i raporti juurde jõudmiseks tuli meeletult hiirega navigeerida. Palju lihtsam on vajutada näiteks 1, L. </p>
<ul>
<li>D – <em>Dashboard</em> </li>
<li>1…9 – Sektsioonid (avalehel projektid) </li>
<li>Q – avab kõik plokid </li>
<li>W – sulgeb kõik plokid </li>
<li>E – avab kõik vigade ja hoiatustega plokid </li>
<li>R – peidab/kuvab kõik vigadega plokid (punased) </li>
<li>G – peidab/kuvab kõik korras plokid (rohelised) </li>
<li>Y – peidab/kuvab kõik hoiatusega plokid (kollased) </li>
<li>Z – eelmine <em>build</em> </li>
<li>X – järgmine <em>build </em></li>
<li>L – viimane <em>build</em> </li>
<li>B – avab/sulgeb viimasete buildide nimekirja menüüs </li>
</ul>
<p>Teine probleem seisnes selles, et raske oli kiirelt vaadates näha, millised on problemaatilised kohad. Võtsin siinkohal kasutusse testimisest meelepärase lahendus: roheline on korras, kollast tuleks üle vaadata ning punasega tegeleda. Lisaks kiirklahvidele on neid lihtne kiirelt filtreerida. Loodan, et teilegi see meeldib ja uutel inimestel on lihtsam alustada.</p>
<p>Programmeerijad tihtipeale vabandavad, et pole disainerid ning nende rakendused võivad halva näoga olla, kuid mina nii ei arva ja usun, et teile meeldib see välimus rohkem. </p>
<p><a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ccnet-dashboard.png"><img style="margin: 10px; display: inline" title="ccnet-dashboard" alt="ccnet-dashboard" src="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ccnet-dashboard_thumb.png" width="240" height="146" /></a> <a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ccnet-project-report.png"><img style="margin: 10px; display: inline" title="ccnet-project-report" alt="ccnet-project-report" src="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ccnet-project-report_thumb.png" width="240" height="146" /></a>     <br /><a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ci-build-report.png"><img style="margin: 10px; display: inline" title="ci-build-report" alt="ci-build-report" src="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ci-build-report_thumb.png" width="240" height="146" /></a> <a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ci-build-report-errors-warnings.png"><img style="margin: 10px; display: inline" title="ci-build-report-errors-warnings" alt="ci-build-report-errors-warnings" src="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/ci-build-report-errors-warnings_thumb.png" width="240" height="146" /></a> </p>
<p>Esmajärjekorras võtsin käsile need raportid, mida ise kasutan, sest nende puhul on mul võimalik lihtsalt näha, millised need välja näevad. Praegu töötavad raportid on järgnevad:</p>
<ul>
<li>Modifications </li>
<li>Errors and Warnings </li>
<li>Tests (NUnit)      <br />Kasutades testide nimetamisel alakriipse, siis raportis on need asendatud tühikutega, mis teeb lugemise tunduvalt meeldivamaks. </li>
<li>Design Analysis (FxCop) </li>
<li>Code Coverage (NCover 1.58, NCoverExplorer) </li>
<li>Code Duplication (Simian) </li>
</ul>
<h2>Mida veel oodata?</h2>
<ul>
<li>Administraatori liides </li>
<li>Projekti graafikud </li>
<li>Raportid (NDepend, FitNesse, Gendarme, MBUnit, MSTest…) </li>
<li>Midagi huvitavat kindlasti veel… </li>
</ul>
<p>Kes soovib saada teavitust järgmise uuenduse kohta, siis võib saata mulle kirja selle kohta. Hea oleks kui vigade ja ettepanekute korral jätaksite jälje kas kommentaaridesse või saadaksite need kirjaga.</p>
<h2>Kuidas paigaldada?</h2>
<p>Mõistlik oleks anda teile veel väike juhend, kuidas paigaldada seda ning viide, kust selle alla saab tõmmata. Paigalduse poole pealt on soovitav kasutada CCNET 1.4.4.83 versiooni ning teha sealsest <em>webdashboard</em>ist koopia. Seejärel allatõmmatud paki sisu sinna lahti pakkida (teil tuleb võib-olla ka teha väikeseid seadistusi ka <em>dashboard.config</em> failis).</p>
<p><a href="http://www.saiku.ee/kaizen/wp-content/uploads/2009/07/CC.NET_dashboard_preview.zip" target="_blank">CruiseControl.NET uus välimus</a></p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/09/cruise-control-net-uus-nagu/' rel='bookmark' title='Permanent Link: Cruise Control.NET uus nägu'>Cruise Control.NET uus nägu</a> <small>Viimasel ajal olen parajalt aega kulutanud Cruise Control.NET raportite lehe...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/08/cruisecontrol-net-uue-valimuse-tulevik/' rel='bookmark' title='Permanent Link: CruiseControl.NET uue v&auml;limuse tulevik'>CruiseControl.NET uue v&auml;limuse tulevik</a> <small>Uue välimuse arendamine on tegusalt läinud ning sain ka soojasid...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/vahem-paringuid-aspnet-ga/' rel='bookmark' title='Permanent Link: Vähem päringuid ASP.NET-ga'>Vähem päringuid ASP.NET-ga</a> <small>.NET 3.5 Service Pack 1-ga tuli ASP.NET lehtedele juurde võimalus...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/07/cruisecontrol-net-uus-ja-ilus-nagu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vestlus Patrick Smacchiaga NDependist</title>
		<link>http://www.saiku.ee/kaizen/2009/07/vestlus-patrick-smacchiaga-ndependist/</link>
		<comments>http://www.saiku.ee/kaizen/2009/07/vestlus-patrick-smacchiaga-ndependist/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 05:47:44 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Analüüs/Arhitektuur]]></category>
		<category><![CDATA[intervjuu]]></category>
		<category><![CDATA[NDepend]]></category>

		<guid isPermaLink="false">http://www.saiku.ee/kaizen/?p=646</guid>
		<description><![CDATA[Mõni aeg tagasi sai vesteldud kirja teel Patrick Smacchiaga NDependist. Seda rakendust olen varemgi uurinud, kuid prooviversioonis CQL-i päringuid kasutada ei ole võimalik, mis tundub olevat üheks väga heaks abimeheks. Võrreldes Microsoft FxCopi või Gendramega, siis sealne viis reegleid lisada on tunduvalt parem. Tundub, et see rakendus võiks olla olemas ettevõtetes, kus ehitatakse .NET platvormil [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/08/arendajate-vestlus-raido-tonts/' rel='bookmark' title='Permanent Link: Arendajate vestlus &#8211; Raido Tonts'>Arendajate vestlus &#8211; Raido Tonts</a> <small>Alustasime Saiku Kaizenis tarkvaraarenduse teemaliste vestluste sarja. Eesmärk on tutvustada...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/nhibernate-2/' rel='bookmark' title='Permanent Link: NHibernate 2.0'>NHibernate 2.0</a> <small>Mõni aeg tagasi tuli välja NHibernate 2.0, mida on võimalik...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/visual-studio-2010/' rel='bookmark' title='Permanent Link: Visual Studio 2010'>Visual Studio 2010</a> <small>Täna teatas Microsoft, et järgmine Visual Studio versioon on 2010...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Mõni aeg tagasi sai vesteldud kirja teel Patrick Smacchiaga <em><a href="http://www.ndepend.com/" target="_blank">NDependist</a></em>. Seda rakendust olen varemgi uurinud, kuid prooviversioonis CQL-i päringuid kasutada ei ole võimalik, mis tundub olevat üheks väga heaks abimeheks. Võrreldes <em><a href="http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx" target="_blank">Microsoft FxCop</a></em>i või <a href="http://www.mono-project.com/Gendarme" target="_blank">Gendrame</a><em></em>ga, siis sealne viis reegleid lisada on tunduvalt parem. </p>
<p>Tundub, et see rakendus võiks olla olemas ettevõtetes, kus ehitatakse .NET platvormil ja hinnatakse koodi kvaliteeti. Nüüd aga väikese vestluse juurde.</p>
<p>  <span id="more-646"></span>
<p><strong>Kuidas <em>NDepend</em> kasulik on tarkvaraarenduses?</strong></p>
<p><em>NDepend</em> aitab koguda reaalseid fakte koodibaasist. Tihtipeale on tarkvara arendamine kahjustatud kuulujuttude poolt milline see on. Näiteks arendaja võib väita, et suur osa hiljutisest tehtud tööst on kaetud testide poolt ja üleüldine kvaliteet on nõuetega vastavuses. <em>NDepend</em>iga on võimalik koheselt kontrollida selliseid väiteid.</p>
<p>Kuna koodibaas on iga tarkvaraarendusfirma ja toote keskne vara, siis kasulikkus peaks olema silmaga nähtav. Kontrollida töövahendiga, mis koodibaasi kvaliteedis, sidususes ja arengus reaalselt toimub, on uus võimalus meeskonna jaoks. Ilma sarnase töövahendita nagu <em>NDepend</em> on võimalik saada ähmane idee toimuvast kasutades hulgaliselt koodiülevaateid, mis on kulukad võrreldes alternatiiviga. <em>NDepend</em> toob muudab suhtlust meeskonnas: enam ei pea küsima “mis toimub”, vaid saab fokuseerida “miks see juhtub nii” (leida põhjus, mitte arutleda tagajärgedest).</p>
<p><strong>Millised eelised on <em>NDepend</em>i kasutada sarnaste töövahenditega turul, näiteks <em>Visual Studio 2010 Architect</em> versiooniga?</strong></p>
<p>Siiani tean, et <em>NDepend</em> on unikaalne töövahend ja me ei saa neid teistega võrrelda. <em>NDepend</em> läheb tunduvalt sügavamale kui <em>Reflector</em>, kui tegemist on kvaliteedi ja struktuuriga, kuid <em>NDepend</em> kasutab <em>Reflectorit</em>, kui on vaja dekompileerida koodi.</p>
<p><em>Visual Studio 2010 Architect</em> tõepoolest sisaldab mõningaid kattuvusi <em>NDepend</em>iga. See liigutus Microsofti poolt näitab, et meil on selliseid töövahendeid vaja ning oleme õnnelikud, et oleme .NET maailmas esimesed sellise tootega. <em>VSTS2010</em> ja <em>NDepend</em>i vaheline kattuvus on piiratud, peamiselt see sisaldab arhitektuuri / sidususe vaadet. <em>VSTS2010</em> tuleb suurepärase arhitektuuri valideerimise ja UML diagrammide loomise võimalusega, kuid <em>NDepend</em>il on ikka võimalus kontrollida 82 erinevat koodi mõõdikut, võrrelda erinevad versioone koodibaasist, defineerida reegleid ja konventsioone CQL abil ja teha keerulisemaid sidususe analüüse (<em>transitive closure</em>).</p>
<p><strong>Kas NDepend toetab meetrikuid parimate praktikate osas nagu SOLID printsiibid, spartalik programmeerimine, CRAP mõõdikut?</strong></p>
<p>Jah, <em>NDepend</em> tuleb 150 erineva eeldefineeritud konventsiooniga, mida võib koheselt ise kasutama hakata. <a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/05/11/write-active-conventions-on-your-code-base.aspx " target="_blank">Lisaks on võimalik endal defineerida reegleid.</a></p>
<p>* <a href="http://www.codinghorror.com/blog/archives/001148.html " target="_blank">Spartaliku programmeerimise</a> (<em>Spartan Programming</em>) täpsemaid <a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/08/05/rules-for-spartan-programmers.aspx" target="_blank">CQL päringuid võib leida Patrick Smacchia ajaveebist</a>. </p>
<p>* CRAP (Change Risk Analysis and Predictions) mõõdik on defineeritud järgnevalt:    <br />CRAP(m) = complexity(m)^2 * (1 – coverage(m) / 100)^3 + complexity(m), kus complexity on meetodi keerukus (cyclomatic complexity) ja covarege on meetodi kaetavus testidega. Mida suurem väärtus on, seda raskem on seda koodihulka hallata. Java platvormil on olemas <a href="http://www.crap4j.org/" target="_blank">Crap4j</a></p>
<p><strong>Kui keeruline on alustada <em>NDepend</em>iga? Kas <em>NDepend</em> pakub mingisugust lahendust probleemidele, mida ta avastab ja kuidas parandada koodi kvaliteeti?</strong></p>
<p>Lisame võimalikult palju dokumentatsiooni juba rakendusse ning pakume ka veebilehel hulgaliselt dokumentatsiooni, seal hulgas on ka 20 lühikest õppevideot, kuidas rakendust kasutada.</p>
<p>* Abi alustamiseks leiab <em>NDepend</em>i kodulehe <a href="http://www.ndepend.com/GettingStarted.aspx" target="_blank">sektsioonist <em>Getting started</em></a> ja mõõdikute osas võib lugeda <a href="http://www.ndepend.com/Metrics.aspx" target="_blank">dokumentatsiooni</a> või võtta appi <a href="http://www.hanselman.com/blog/content/binary/NDepend%20metrics%20placemats%201.1.pdf" target="_blank">väljatrükitav seletusleht</a> (PDF).</p>
<p><strong>Kas NDepend-i on võimalik saada avatud lähtekoodiga projektide jaoks soodsamalt?</strong></p>
<p>Jah, kui soovite kasutada <em>NDepend</em>i OSS projekti jaoks, siis võtke meiega ühendust.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/08/arendajate-vestlus-raido-tonts/' rel='bookmark' title='Permanent Link: Arendajate vestlus &#8211; Raido Tonts'>Arendajate vestlus &#8211; Raido Tonts</a> <small>Alustasime Saiku Kaizenis tarkvaraarenduse teemaliste vestluste sarja. Eesmärk on tutvustada...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/nhibernate-2/' rel='bookmark' title='Permanent Link: NHibernate 2.0'>NHibernate 2.0</a> <small>Mõni aeg tagasi tuli välja NHibernate 2.0, mida on võimalik...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/09/visual-studio-2010/' rel='bookmark' title='Permanent Link: Visual Studio 2010'>Visual Studio 2010</a> <small>Täna teatas Microsoft, et järgmine Visual Studio versioon on 2010...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/07/vestlus-patrick-smacchiaga-ndependist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Valideerimine ilusate liidestega</title>
		<link>http://www.saiku.ee/kaizen/2009/04/valideerimine-ilusate-liidestega/</link>
		<comments>http://www.saiku.ee/kaizen/2009/04/valideerimine-ilusate-liidestega/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:10:03 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Analüüs/Arhitektuur]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[valideerimine]]></category>

		<guid isPermaLink="false">http://www.saiku.eu/?p=478</guid>
		<description><![CDATA[Eelmisest veidi parem valideerimise variant tundub olevat kapseldada reeglid ühte eraldiseisvasse klassi. See on hästi kooskõlas ka Single Responibility Principlega. public class PersonValidator : AbstractValidator&#60;Person&#62; { public PersonValidator() { RuleFor(x =&#62; x.FirstName).NotNull().And.Length(1, 25); RuleFor(x =&#62; x.LastName).NotNull().And.Length(1, 25); RuleFor(x =&#62; x.PersonalCode).NotNull().And.Matches(&#34;[0-9]{11}&#34;); RuleFor(x =&#62; x.DateOfBirth).NotNull().And.LessThan(DateTime.Today); RuleFor(x =&#62; x.Age).NotNull().And.GreaterThan(1).And.LessThan(120); } } Siinkohal oleks mõistlik luua enda baasklass ning [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/' rel='bookmark' title='Permanent Link: Valideerimine atribuutidega'>Valideerimine atribuutidega</a> <small>Atribuutide kasutamine valideerimiseks tundub paljude jaoks hea mõte olevat. Seda...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/vaesed-inimesed/' rel='bookmark' title='Permanent Link: Vaesed inimesed'>Vaesed inimesed</a> <small>Andekad inimesed on tihtipeale tööl vaesed. Nende annet ei lubata...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/07/kuss-kompilaator/' rel='bookmark' title='Permanent Link: Kuss, kompilaator!'>Kuss, kompilaator!</a> <small>Avatud lähtekoodiga projekte uurides jäi mulle silma üks C# konstruktsioon,...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/" target="_blank">Eelmisest veidi parem valideerimise variant</a> tundub olevat kapseldada reeglid ühte eraldiseisvasse klassi. See on hästi kooskõlas ka <em>Single Responibility Principle</em>ga.</p>
<pre class="brush: csharp;">
public class PersonValidator : AbstractValidator&lt;Person&gt;
{
    public PersonValidator()
    {
        RuleFor(x =&gt; x.FirstName).NotNull().And.Length(1, 25);
        RuleFor(x =&gt; x.LastName).NotNull().And.Length(1, 25);
        RuleFor(x =&gt; x.PersonalCode).NotNull().And.Matches(&quot;[0-9]{11}&quot;);
        RuleFor(x =&gt; x.DateOfBirth).NotNull().And.LessThan(DateTime.Today);
        RuleFor(x =&gt; x.Age).NotNull().And.GreaterThan(1).And.LessThan(120);
    }
}
</pre>
<p><span id="more-478"></span></p>
<p>Siinkohal oleks mõistlik luua enda baasklass ning liides:</p>
<pre class="brush: csharp;">
public interface IValidator&lt;TEntity&gt;
{
    IValidationResults Validate(TEntity entity);
}

public abstract class BaseValidator&lt;TEntity&gt; : AbstractValidator&lt;TEntity&gt;, IValidator&lt;TEntity&gt;
{
    public IValidationResults Validate(TEntity entity)
    {
        //...
    }
}

public class PersonValidator : BaseValidator&lt;Person&gt;
{
    public PersonValidator()
    {
        //...
    }
}
</pre>
<p>Edaspidi võime registreerida <em>ServiceLocator</em>is <em>IValidator&lt;Person&gt;</em> liidesele vastavaks <em>PersonValidator</em>i ning enne salvestamist samalaadselt valideerimine läbi viia.</p>
<p>Sellise lahendusega tekkib ka mõningasi keerukohti, mis võivad tahta lahendamist. Kuna kasutusel on <em>generic</em> tüübid, siis on veidi raskem lisada seda <em>NHibernate</em>&#8216; salvestamise eelseks sündmuseks. Selleks tuleb meil eelnevalt kokku panna tüüp <em>IValidator&lt;TEntity&gt;</em>, kus <em>TEntity</em> on määratud konkreetse tüübiga. Alternatiivne lahendus on kasutada seda lihtsalt <em>IRepository&lt;TEntity&gt;.Save(TEntity entity)</em> meetodis.</p>
<p>Erinevalt atribuutidest pole meil väga võimalusi luua konventsioone, mistõttu tuleb meil osades kohtades rohkem koodi kirjutada või leida alternatiivseid lahendusi (reeglitest välja lugeda atribuudiga seotud nõuded).</p>
<p>Hea külg selle juures on see, et saame kasutada raamistikke, kus on äriobjektid defineeritud, sest me ei pea lisama atribuute neile, vaid kirjutame valideerimise reeglitega klassi juurde.</p>
<p><strong>Raamistikud:</strong></p>
<ul>
<li><a href="http://www.codeplex.com/FluentValidation" target="_blank">FluentValidation for .NET</a></li>
</ul>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/' rel='bookmark' title='Permanent Link: Valideerimine atribuutidega'>Valideerimine atribuutidega</a> <small>Atribuutide kasutamine valideerimiseks tundub paljude jaoks hea mõte olevat. Seda...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/vaesed-inimesed/' rel='bookmark' title='Permanent Link: Vaesed inimesed'>Vaesed inimesed</a> <small>Andekad inimesed on tihtipeale tööl vaesed. Nende annet ei lubata...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/07/kuss-kompilaator/' rel='bookmark' title='Permanent Link: Kuss, kompilaator!'>Kuss, kompilaator!</a> <small>Avatud lähtekoodiga projekte uurides jäi mulle silma üks C# konstruktsioon,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/04/valideerimine-ilusate-liidestega/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Valideerimine atribuutidega</title>
		<link>http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/</link>
		<comments>http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 06:04:58 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Analüüs/Arhitektuur]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[FluentNHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[valideerimine]]></category>

		<guid isPermaLink="false">http://www.saiku.eu/?p=464</guid>
		<description><![CDATA[Atribuutide kasutamine valideerimiseks tundub paljude jaoks hea mõte olevat. Seda väidet kinnitab selliste raamistikkude rohkesus. Ei saa vastu vaielda, et see on üks lihtsamaid viise, kuid tasuks ka vaadata alternatiive enne kasutamist, sest seegi pole ilma tumeda pooleta. public class Person { public int Id { get; private set; } [Required, Length(Max = 25)] public [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/04/valideerimine-ilusate-liidestega/' rel='bookmark' title='Permanent Link: Valideerimine ilusate liidestega'>Valideerimine ilusate liidestega</a> <small>Eelmisest veidi parem valideerimise variant tundub olevat kapseldada reeglid ühte...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/09/votame-kaalust-alla/' rel='bookmark' title='Permanent Link: Võtame kaalust alla'>Võtame kaalust alla</a> <small>Peter Paul Rubensile meeldisid lopsakad naised ja ta maalis neist...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/vaesed-inimesed/' rel='bookmark' title='Permanent Link: Vaesed inimesed'>Vaesed inimesed</a> <small>Andekad inimesed on tihtipeale tööl vaesed. Nende annet ei lubata...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Atribuutide kasutamine valideerimiseks tundub paljude jaoks hea mõte olevat. Seda väidet kinnitab selliste raamistikkude rohkesus. Ei saa vastu vaielda, et see on üks lihtsamaid viise, kuid tasuks ka vaadata alternatiive enne kasutamist, sest seegi pole ilma tumeda pooleta.</p>
<pre class="brush: csharp;">
public class Person
{
    public int Id { get; private set; }

    [Required, Length(Max = 25)]
    public string FirstName { get; set; }

    [Required, Length(Max = 25)]
    public string LastName { get; set; }

    [Required, Pattern(&quot;[0-9]{11}&quot;)]
    public string PersonalCode { get; set; }

    [Required, PastDate]
    public DateTime DateOfBirth { get; set; }

    [Required, Between(Min = 1, Max = 120)]
    public int Age { get; set; }
}
</pre>
<p><span id="more-464"></span></p>
<p>Esimene muret tekitav koht on see, et klass <em>Person</em> on seotud konkreetse valideerimise raamistiku attribuutidega. Paljusid see ilmselt ei häiri. Kuna neid raamistikke on palju, siis raamistiku ümber vahetamine hiljem võib täiesti tõenäoline olla (kui algne valik ei olnud hea ja mõnel teisel raamistikul on paremad võimalused) ning palju õnne selle tegemisel.</p>
<p>Teine probleem seisneb selles, et kasutades mõne raamistiku äriklasse, siis ei ole võimalik neile valideerimise reegleid lisada. See tähendab seda, et luues väärtuse tüüpi (<em>Value Object</em>)&#160; klassid, mida mitmete süsteemide puhul kasutada saaks (<em>Money</em>, <em>Quantity</em>, <em>GeographicBoundary</em> jne), puuduvad valideerimise reeglid.</p>
<p>Kolmas probleem tekkib sellega, et äriloogikas on tihti keerukamad reeglid, mida atribuudid täita ei suuda ning seetõttu tuleb lisada näiteks <em>Validate</em> meetod juurde. See teeb klassi disaini imelikumaks.</p>
<p>Atribuutidega on võimalik ka häid asju korda saata. Näiteks võime <em>Required</em> atribuudiga elementidele lisada automaatselt andmebaasi loomise skripti <em>NOT NULL</em> märke <em>FluentNHibernate</em> abiga.</p>
<pre class="brush: csharp;">
public class Persistence : PersistenceModel
{
    public Persistence()
    {
        Conventions.ForAttribute&lt;RequiredAttribute&gt;((attribute, property) =&gt;
        {
            if (property.ParentIsRequired)
                property.SetAttribute(&quot;not-null&quot;, &quot;true&quot;);
        });
    }
}
</pre>
<p>[MSDN Magazine: <a href="http://msdn.microsoft.com/en-us/magazine/dd419655.aspx" target="_blank">Conventions over configuration</a>]</p>
<p>Sarnaselt võime luua <em>TextBox</em>id, mille pikkus on paika pandud pikkuse reegli järgi või luua <em>DropDownList</em>i väärtustega, mis jäävad vastavasse vahemikku. Siinkohal tuleb ainult ideedel lennata lasta ja neid realiseerida.</p>
<p>Siiani oleme tegelenud ainult reeglite deklareerimisega, siis tuleks ka need mingil moel jõustada. Lahendus selleks on luua teenus <em>IValidationService</em>:</p>
<pre class="brush: csharp;">
public interface IValidationService
{
    IValidationResults Validate&lt;T&gt;(T entity);
    IValidationResults Validate(Type entityType, object entity);
    IValidationResults Validate(object entity);
}
</pre>
<p>Seda võime kasutada enne salvestamist andmehoidlas või registreerida salvestamise eelseks sündmuseks, kus ebakorrektsete andmete puhul visatakse viga. Mõlema puhul oleks mõistlik <em>ServiceLocator</em>i käest konkreetne realiseering küsida ja käivitada mõni neist meetoditest. Siinkohal tasub silmas pidada ka seda, et <em>NHibernate</em> annab tagasi <em>proxy</em> klasse ning valideerimine võib seetõttu vahele jääda kui valideeritava objekti tüüpi kaasa ei anna.</p>
<p>Tagasi ärimudeli atribuutidega solkimise juurde tulles, siis alternatiivne lahendus oleks kasutada neid transpordi objektidel ning äriolemid realiseerida selliselt, et neid poleks võimalik ebakorrektsesse seisu viia.</p>
<p>Raamistikud:</p>
<p><strong>.NET</strong> </p>
<ul>
<li><a href="http://www.codeplex.com/entlib" target="_blank">Enterprise Library Validation Application Block</a> </li>
<li><a href="http://nhforge.org/media/p/7.aspx" target="_blank">NHibernate Validator</a> </li>
<li><a href="http://xval.codeplex.com/" target="_blank">xVal</a> </li>
</ul>
<p><strong>Java</strong> </p>
<ul>
<li><a href="http://oval.sourceforge.net/" target="_blank">OVal</a> </li>
<li><a href="http://www.javalid.org/" target="_blank">JaValid</a> </li>
</ul>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2009/04/valideerimine-ilusate-liidestega/' rel='bookmark' title='Permanent Link: Valideerimine ilusate liidestega'>Valideerimine ilusate liidestega</a> <small>Eelmisest veidi parem valideerimise variant tundub olevat kapseldada reeglid ühte...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/09/votame-kaalust-alla/' rel='bookmark' title='Permanent Link: Võtame kaalust alla'>Võtame kaalust alla</a> <small>Peter Paul Rubensile meeldisid lopsakad naised ja ta maalis neist...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/vaesed-inimesed/' rel='bookmark' title='Permanent Link: Vaesed inimesed'>Vaesed inimesed</a> <small>Andekad inimesed on tihtipeale tööl vaesed. Nende annet ei lubata...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2009/04/valideerimine-atribuutidega/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Produktiivsusest: VS2008 C# nipid ja trikid</title>
		<link>http://www.saiku.ee/kaizen/2008/10/produktiivsusest-vs2008-csharp-nipid-ja-trikid/</link>
		<comments>http://www.saiku.ee/kaizen/2008/10/produktiivsusest-vs2008-csharp-nipid-ja-trikid/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 05:10:51 +0000</pubDate>
		<dc:creator>Marek Tihkan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Arendus]]></category>
		<category><![CDATA[CodeRush]]></category>
		<category><![CDATA[produktiivsus]]></category>
		<category><![CDATA[ReSharper]]></category>
		<category><![CDATA[üritus]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://beautifulcode.wordpress.com/?p=120</guid>
		<description><![CDATA[Sai külastatud ka siis nippide ja trikkide üritust. Vasikavaimustust peale ei tulnud, kuid arvan, et nii mõnigi inimene sai targemaks. Kes ise pole tahtnud uurida, kuidas Visual Studios elu kiiremaks ja mõnusamaks teha, neile oli see nagu rusikas silmaauku. Esimene probleem, mida võib presentatsioonidel näha on see, et ei julgeta/viitsita Visual Studiot ümber kujundada (visuaalselt), [...]


Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/06/resharper-4/' rel='bookmark' title='Permanent Link: ReSharper 4'>ReSharper 4</a> <small>Viimase kuu olen kasutanud R# 4 öiseid versioone (nightly build),...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/produktiivsusest-vangistus-tool/' rel='bookmark' title='Permanent Link: Produktiivsusest: Vangistus tööl'>Produktiivsusest: Vangistus tööl</a> <small>Jalutad tööle ning mõtteis mõlgub vaid küsimus: &#8220;Miks sean samme...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/02/t-kiirendamine-resharperi-ja-klaviatuuriga/' rel='bookmark' title='Permanent Link: T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga'>T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga</a> <small>Paljude arendajate jaoks on pärast Re# kasutamist võimatu kasutada Visual...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://melborp.net/archive/2008/10/06/seminar-vs2008-c-nipid-ja-trikid-sessioon-tulemas.aspx">Sai külastatud ka siis nippide ja trikkide üritust</a>. Vasikavaimustust peale ei tulnud, kuid arvan, et nii mõnigi inimene sai targemaks. Kes ise pole tahtnud uurida, kuidas <em>Visual Studio</em>s elu kiiremaks ja mõnusamaks teha, neile oli see nagu rusikas silmaauku.</p>
<p>Esimene probleem, mida võib presentatsioonidel näha on see, et ei julgeta/viitsita <em>Visual Studio</em>t ümber kujundada (visuaalselt), samas ei kasutata neid nuppe ka väga. Produktiivsuse esimene reegel on fokuseerimine ühele tegevusele/asjale. Senikaua kuni sodi (aknad ja nupud) on ees, seni ei saa häirimatult fookust suunata näiteks koodi kirjutamisele ja ka väga väikese pinna peal on halb tööd teha. Kes arvab, et <em>Solution View</em> või <em>Properties</em> vaadet on vaja koodi kirjutamisel kogu aeg lahti hoida, see eksib ilmselgelt (või palun seletage mulle kuidas on hea koodi kirjutada ja passida näiteks <em>Solution View</em>&#8216;d <em>Text Editori</em> asemel).<br />
<span id="more-120"></span><br />
<img src="http://www.saiku.ee/kaizen/wp-content/uploads/2008/10/vsclean.png" alt="" title="vsclean" width="500" height="303" class="alignnone size-full wp-image-130" /></p>
<p>Kui piisavalt ruumi teha, siis on mõistlik võtta ette ka koodi kirjatüüp ja koodi värvimine. Tumedama tausta peal tundub kuidagi mõnusam koodi kirjutada ja suurema kirjaga näeb ka seda paremini. Värvitoonide vahetamine võib tuua tegelikult ka veel kasu mõtlemises. Näiteks mul on klassitüüp ja liidese tüüp erinevat värvi. Küllaltki lihtsalt näen klassile peale vaadates, milline tüüp on tugevamini seotud. Värvigammade kohta on <a href="http://www.hanselman.com/blog/">Scott Hanselman</a>il päris hea <a href="http://www.hanselman.com/blog/VisualStudioProgrammerThemesGallery.aspx">kokkuvõte</a>.</p>
<p><img src="http://www.saiku.ee/kaizen/wp-content/uploads/2008/10/vsfullscreen.png" alt="" title="vsfullscreen" width="229" height="92" class="alignleft size-full wp-image-131" />Küllaltki palju kasu võiks leida <em>Fullscreen</em>ist, kui see nupp ei oleks üleval nii silma torkav. See ei pruugi kõigil nii olla, kuid mul on =D</p>
<p>Samas ruumieelist ka väga oluliselt ei saa (peamiselt <em>taskbar</em>i võrra).</p>
<p>Järgmisena tuleks välja valida, millise tulevärgiga edasi minna, sest Visual Studio sisseehitatud funktsionaalsus on veel veidi puudlik (Microsoft ka ei jõua kõike ülihästi teha): <a href="http://www.jetbrains.com/resharper/">ReSharper</a>, <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml">CodeRush</a>, <a href="http://www.wholetomato.com/">Visual Assist X</a>. Ise kasutan <a href="http://www.jetbrains.com/resharper/">ReSharper</a>it, kuid <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml">CodeRush koos Refactor Pro&#8217;ga</a> on ka igati hea valik. Viimast ei ole ise proovinud, seega oleks tore selle kohta mõni kommentaar saada.</p>
<p>Valiku tegemisel ja nende õppimist aitavad järgnevad videod:<br />
<a href="http://www.jameskovacs.com/blog/BecomingAJediPart1OfN.aspx">Becoming a Jedi I</a><br />
<a href="http://www.jameskovacs.com/blog/BecomingAJediPart2OfN.aspx">Becoming a Jedi II</a><br />
<a href="http://www.jameskovacs.com/blog/BecomingAJediPart3OfN.aspx">Becoming a Jedi III</a><br />
<a href="http://dnrtv.com/default.aspx?showID=107">DNR TV: Mark Miller on CodeRush with Refactor!</a></p>
<blockquote><p>Kellele on mureks, et kõvakettale kirjutatakse mingeid temp faile, siis nad peaksid ümber mõtlema veidi. Ka SVN kirjutab faile projekti kausta. Lisaks on ka kõvaketas odavam kui arendaja töö ning <a href="http://www.codinghorror.com/">Jeff Atwood</a> on kirjutanud kunagi sellise hea programmi <a href="http://www.codinghorror.com/blog/archives/000368.html">Clean Sources Plus</a>, mis puhastab projekti kataloogi etteantud mustri järgi failidest.<br />
Tunduvalt nutusem oleks, kui <a href="http://www.jetbrains.com/resharper/">ReSharper</a> ei kirjutaks neid sinna, sest sellisel juhul tuleks kõik see info mällu uuesti genereerida.
</p></blockquote>
<p>Pärast ümber struktureerimist visuaalselt pole võimalik hiirega väga palju enam majandada ja produktiivsuse tulevärgist midagi kätte saamiseks tuleb hakata õppima kiirklahve. Tihtipeale on raske kõikide akende kiirklahve meeles pidada, siis tasub need süstematiseerida kuidagi. Näiteks mul on alumisel real olevad aknad kõik ALT + Number kiirklahviga ning tagasi koodi peale saan ESC nupuga.</p>
<blockquote><p>ALT klahviga on võimalik pääseda programmi menüüsse ja sealt edasi saab tähtede abiga menüüs ringi käia. Näiteks ALT, R, U, N käivitab kõik testid <a href="http://www.jetbrains.com/resharper/">ReSharper</a>i puhul (hmm&#8230; päris huvitav sõna tuleb kokku, pole varem sellise pilguga vaadanudki).</p></blockquote>
<p>Väike vahekokkuvõte:<br />
1. Puhast visuaalselt sodist.<br />
2. Vaheta värvigammat.<br />
3. Vali ja kasuta produktiivust tõstvat töövahendit<br />
4. Õpi kiirklahvid</p>
<p>Ajapikku tunneb ikka mõnesid puudujääke, mida saab väiksemate vahenditega leevendada. Näiteks <a href="http://www.roland-weigelt.de/ghostdoc/">GhostDoc</a> dokumenteerimiseks, <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml">CodeRush</a>-i kasutajale <a href="http://www.testdriven.net/">TestDriven.Net</a> jne. <a href="http://www.hanselman.com/tools">Nimekirja igasugustest kasulikest tööriistadest leiab siit</a> (tundub, et Scott Hanselmanile meeldib kokkuvõtteid teha).</p>
<p>Teine hea koht kuhu aega veidi investeerida on mallid. Nende abiga saab nii mõndagi korda saata. <a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml">CodeRush</a>-il on päris tõhusad viisid, kuidas kiirelt koodi kirjutada (DNR TV videost näeb seda kenasti). Kellel ReSharperi malle vaja läheb, siis võib leida mu omasid <a href="http://www.saiku.ee/kaizen/2008/07/resharper-mallid/">sealt</a>.</p>
<p>Edasi veel tasub minna sellega, et <em>Visual Studio</em> ei ole ainuke koht, kust annab produktiivsust tõsta. Ka windowsi teistest rakendustest saab veidi rohkem välja pigistada ning sealt edasi võiks mõelda e-posti majandamisele (<em>Inbox Zero</em>: <a href="http://www.43folders.com/izero">tekst</a>, <a href="http://video.google.com/videoplay?docid=973149761529535925">pilt ja heli</a>) ja töö planeerimisele jms.</p>


<p>Loe veel sarnasel teemal:<ol><li><a href='http://www.saiku.ee/kaizen/2008/06/resharper-4/' rel='bookmark' title='Permanent Link: ReSharper 4'>ReSharper 4</a> <small>Viimase kuu olen kasutanud R# 4 öiseid versioone (nightly build),...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2009/01/produktiivsusest-vangistus-tool/' rel='bookmark' title='Permanent Link: Produktiivsusest: Vangistus tööl'>Produktiivsusest: Vangistus tööl</a> <small>Jalutad tööle ning mõtteis mõlgub vaid küsimus: &#8220;Miks sean samme...</small></li>
<li><a href='http://www.saiku.ee/kaizen/2008/02/t-kiirendamine-resharperi-ja-klaviatuuriga/' rel='bookmark' title='Permanent Link: T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga'>T&#246;&#246; kiirendamine ReSharper&#8217;i ja klaviatuuriga</a> <small>Paljude arendajate jaoks on pärast Re# kasutamist võimatu kasutada Visual...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.saiku.ee/kaizen/2008/10/produktiivsusest-vs2008-csharp-nipid-ja-trikid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->