Trice i kučine »

[11 Dec 2009 | 0 Comments]

Prije koji dan sam bio pozvan na ATD5 konferenciju da kažem nekoliko riječi o MVC v2. Prezentacija je trajala punih 25min, minus 5 minuta zbog tehničkih poteškoća spajanja sve te prezentacijske opreme, ali na kraju je 20 minuta bilo dovoljno da ispričam baš sve, od '79 do '09, od nastanka patterna do implementacije u naš dragi framework i sve to demonstriram kroz par demo aplikacija. Uz to, trebalo je i spomenuti novosti u verziji 2, kao da ljudi već aktivno rade i razvijaju u verziji 1! Ne moram niti napisati, ali na kraju su me svi gledali u čudu, i pitali se od kuda je ovaj došao i što to on priča uopće. Već sam bio pomislio da su mi sve lađe potonule, kad ono evo trojica sudionika konferencije sa pitanjima glede te čudne tehnologije! To mi je bilo dovoljno da ne počinim ritualni harakiri, i slobodno odputujem doma mirne savjesti da sam uspio (možda) spasiti barem jednu ili dvije izgubljene duše u moru proceduralnog špageti ala bolonjez ASP.NET koda. Što bi tek bilo da sam počeo pričati o Uncle Bobovim SOLID principima, proglasili bi me mesijom!? Malo si umišljam, oprostiti će te mi?
Pred kraj konferencije, dokle sam sjedio u foajeu hotela i pućkao lulu (ili da ne lažem: jeo pizza cut i pio colu, ipak sam ja white&nerdy:), prišao mi je Domagoj Pavlešić, tvorac Bugovog portala i Foruma (da, Bug odnosno Domagoj je sam isprogramirao svoj forum engine sa ASP.NET, to mi je baš kul), i zamolio me da održim punu prezentaciju MVC frameworka na novoj user grupi! Moja prezentacija je tu nebitna, puno važnija je vijest osnivanja nove microsoft user grupe koja će se baviti isključivo webom i razvojem web stranica i aplikacija. Izuzetno mi je drago što je Domagoj prepoznao potrebu okupljanja .NET web developera preuzeo inicijativu osnivanja grupe, svaka mu pohvala za to. Prvi sastanak je 15.12.2009, za daljnje aktivnosti su već najavljene na službenom webu.

Nedugo potom konferencije, dobio sam jedan email koji me jako obradovao. Ne samo zbog pošiljatelja koji ima MVP status (da, jedan MVP je MENE kontaktirao!), nego i zbog sadržaja maila, gdje me poziva na suradnju oko novog web portala za ASP.NET MVC zajednicu Hrvatske, Bosne, Srbije  i Slovenije! Ne samo da imamo MS Community grupu, nego smo dobili i web portal za MVC! Stoga, sljedeću godinu proglašavam godinu renesanse ASP.NETa; šire prihvačanje MVCa, osnivanje web user grupe i portala će svakako učiniti 2010 zanimljivom za ASP.NET developere. Dali bi tražio previše kada bi od Djeda Mraza/Božićnjaka/Svetog Nikole zaželio i da se malo više okreneo i Silverlightu? Neka, mora nešto ostati i za kasnije.
Sve koji žele sudjelovati u djelovanju portala i user grupe, pozivam da im se obrate jer iza stoje jako dobri ljudi i veliki stručnjaci:)

Web Dev »

[6 Dec 2009 | 0 Comments]

Tuple je struktura podataka možda nepoznata dijelu .NET programerske publike, ali je svakako važan dio matematičke teorije i teorije struktura podataka. Pitajte Donalda Knutha ako mi ne vjerujete! Naime, radi se o nepromjenjivoj (immutable) listi elemenata enkapsuliranih u objekt. Tuple tip podataka je dosta korišten u Pythonu, dolazi sa .NET Frameworkom 4, ali u .NET 2/3.5 se moramo sami pobrinuti napraviti ga, što je vrlo jednostavan posao.

O čemu se tu radi uopće; sjetite se TryParse metode objekta Int32:

int value=0;
bool pretvorba = Int32.TryParse(“7”, out value);
// moglo bi se pisati i ovako:
// [bool] [int] = Int32.TryParse(“7”)

TryParse vraća dva podataka, bool vrijednost koja govori dali je string uspješno parsiran, i int vrijednost parsiranog stringa. Ovo je primjer gdje se može iskoristiti Tuple, pošto s njime možemo vratiti više enkapsuliranih objekata:

Tuple<bool,int> result = Int32.TryParse(“7”); 
Assert.AreEqual(true, result.Item1); 
Assert.AreEqual(7, result.Item2);

kao se može vidjeti iz primjera, kreirali smo Tuple koji sadrži bool i int objekte, i preko propertya Item1 i Item2 im pristupamo.  Ovakvih primjera vjerojatno ima još mnogo, a meni osobno se je prvo palo na pamet kao zamjena za mnoge DTO (data transfer objects) koje moram pisati za MVC aplikaciju kada šaljem podatke iz controllera u view. Ako sam do sada morao kreirati klasu koja enkapsulira List<Articles> i string Title, sada mogu preskočiti izradu klase i samo poslati Tuple<List<Article>,string).

Glavni nedostatak ovakvog pristupa upotrebe kao DTO objekta je što se apsolutno ne zna što taj Tuple sadrži, osim tipa podatka. Prije sam imenovao varijable u DTO klasi prema opisu njihove uloge u domeni, a sada samo znam da imam tri stringa, dva integera i slično, koje pozivam preko propertya Item1, Item2, itd. Čista programerska ljenost! Stoga koliko god njegova upotreba zvuči pimamljivo, i skrati par (desetaka) minuta posla, kod imalo većih projekata može zadati glavobolje i prouzrokovati brojne bugove. Upozoreni ste!
Slijedi jednostavna implementacija Tuplea za .NET Framework 2/3.5: More...