Výsledky 3. kola .NET Challenge

Tomáš Jecha, MVP, MCSD       09.12.2008       Offtopic       11041 zobrazení

Komentáře poroty k řešení z 3. kola

Výsledky 3. kola soutěže .NET Challenge

Třetí kolo .NET Challenge nás zavedlo na pole webových aplikací. Nejednalo se však o banální úlohy, které by bylo možné splácat za pár chvil bez rozmyslu. Každý soutěžící musel pečlivě naplánovat jakou technologii využije, jakým způsobem bude schraňovat data, jak vyřeší bezpečnost a hlavně jaké funkce nabídne koncovému uživateli, aby byla aplikace co nejpříjemnější na ovládání a zároveň bylo snadné získat potřebné informace.

První věc, kterou jsme při otevření archivu s úlohou hodnotili, byl způsob dodání aplikace / databáze a pohodlnost jejího nasazení pro testování. V zadání jsme tuto záležitost nijak nekomentovali a nechali jsme na vás, jak se s tím poperete.

Nejoblíbenějším řešením byla obyčejná složka s webovým projektem a přibalenou databází ve formátu MDF. Asi 80% soutěžících poprvé pohořelo na defaultním pojmenování SQL Server instance jako .\SQLEPXRESS - moje se jmenuje jinak. Pokud to ale byla jen otázka connection stringu, tak to chyba nebyla. Bohužel řada z vás nenakonfigurovala správně i providery (membership pro bezpečnost atp.) a tak se dědil původní connection string z machine.config a proto nefungovalo přihlášení - i tuto drobnost jsem vcelku přehlížel, jen jsem nečekal, že se nachytá tolik lidí.

Několik vyvolených dodalo databázi ve formátu XML (hezké řešení vzhledem k tomu, že dat bylo málo a cachování správně použili), či jako běžnou databázi do SQL Serveru (instalace buď v podobě SQL scriptu, BAK zálohy nebo dokonce formou automatické instalace pomocí datového modelu přímo z webové aplikace).

Po úspěšném spuštění (dalo to zabrat, ale povedlo se to u všech) jsme se před samotným hodnocením kódu a funkcí podívali na zoubek použitým technologiích. Poměrně populární se stává dlouho očekávaná MVC (nedávno vypuštěná jako Beta), což je nadstavba do ASP.NET oddělující striktněji kód, vzhled a datovou vrstvu. Na druhou stranu nikdo neimplementoval hojně propagovaný Silverlight, což plně chápeme, nebylo by to asi moc užitečné. Někteří vylepšili uživatelské prostředí AJAX Control Toolkitem nebo JavaScriptovou knihovnou jQuery. Pokud hovoříme o vzhledu, setkali jsme se párkrát s využitím opravdu skvěle vypadajících zdarma dostupných css šablon. Je ale jasné, že to v programátorské soutěži není berná mince hodnocení.

Lehká úloha - Novinky na webu

Výsledky úlohy Novinky na webu

Lehká úloha spočívala ve webové aplikaci, která funguje jako jednoduchý redakční systém na publikování novinek, co se mohou zařazovat do jednotlivých kategorií.

Sešlo se nám 15 řešení. Mohli jsme na ně nahlížet dvěma způsoby - jako uživatel na celkový dojem z výsledku a jako programátor na provedení. Je jasné, že kvalitní objektový návrh a dobře komentovaný kód dostane dost bodů, i když jeho GUI nebude moc přívětivé. Ale nebude jich pořád tolik, aby dosáhl na jednodušší aplikaci s promyšleným ovládáním. A můžou to být i drobnosti - co třeba abecedně seřazené kategorie nebo schování zbytečných údajů jako je Id záznamu, opravdu ho potřebuje uživatel znát?

Řada soutěžících i přes nepovinnost úkolu vypracovala rozsáhlé administrační rozhraní na editaci profilů a správu uživatelů. Často to při hodnocení rozhodovalo, výsledky jsou těsné. Zajímavá pak byla drobná vylepšení jako rozšířené stránkování, žebříček uživatelů, kteří nejvíce přispívají nebo vyhledávání podle rozsahu datumů.

Samotné zobrazování novinek řešil každý po svém. Bylo těžké určit, které řešení je nejlepší, když téměř všechny splnily zadání a rozdíl byl právě v těch "drobných" třešničkách na dortu.

Těžká úloha - Jezdíme sem a tam

Výsledky úlohy Jezdíme sem a tam

Úspěšné vyřešení těžké úlohy by mělo spočívat v napsání webu starajícího se o seznam plánovaných jízd a jejich poskytnutí ostatním uživatelům systému k zarezervování. Poslali jste nám 7 řešení.

Popisovat tady použité algoritmy by bylo asi zbytečné. 99% příkazů totiž jen buď obstarává data, popřípadě nějak vyhodnocuje požadavek nebo nastaví nějakému prvku určitou vlastnost, aby zobrazil rozumný nadpis. Žádná věda.

Mnohem zajímavější je ale zpracování uživatelského prostředí. Oproti jednoduché úloze se zde totiž můžeme dostat do více situací, které si vyžadují trochu odlišný přístup:

  • vyhledávám jízdu, která mi bude vyhovovat - nechci vidět zbytečné záznamy (filtrované vyhledávání, hlídací pes)
  • chci si založit svoji jízdu a mít přehled o rezervacích, které jsou v mém autě provedeny
  • chci mít přehled o plánovaných jízdách - ať už je plánuji nebo se jich jen zúčastňuji

Při hodnocení bylo jasně vidět, kdo se snažil systém zdokonalit do použitelné podoby a kdo se spíše zaměřovat jen na strohé splnění úlohy. Jak už jsem ale psal na začátku - i ono strohé plnění úloh přináší hodně bodů a proto neříkám, že se jednalo o špatnou strategii.

Výsledné aplikace měli řadu podob, způsobů ovládání, validace, designu i náhledů na data. Všechny odevzdané řešení jsme dvakrát pečlivě prošli a snažili se podle jejich funkcí, návrhu, přehlednosti, komentářů a vlastních vylepšení optimálně sestavit hodnotící žebříček.

Závěrem

Všichni soutěžící odvedli skvělou práci. Děkujeme vám za čas, který jste tvorbě řešení obětovali! Doufáme, že psaní webové aplikace trochu obohatilo vaše zkušenosti nebo při nejmenším alespoň procvičilo dosavadní znalosti využitelné při dalším profesním počínání, či studiu.

Co se týče posledního kola, zkusíme si s ním pospíšit, aby se vše stihlo do vánoc.

 

hodnocení článku

1 bodů / 1 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Výsledky 3. kola .NET Challenge

Škoda, že nejsou komentáře k řešení. Přestože asi dokážu odhadnout, co se mě z tohoto článku týká a co ne, vždycky mi ty komentáře daly dobrou zpětnou vazbu.

Ještě bych se chtěl zeptat, jestli při použití alternativních membership providerů (konkrétně Altairis Simple Web Providers) musím vytvářet profil nově vytvořeného uživatele přímým SQL příkazem, nebo je na to nějaká metoda. Hledal jsem dlouho, ale nenašel.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ahoj,

nevím zda jsem to použil správně, ale mě fungovalo vytvoření profilu následovně.

Poté co byl vytvořen uživatel, jsem provedl následující kód:

MyWebProfile.Create(username, true);

MyWebProfile profile = MyWebProfile.GetProfile(username);

if (!profile.IsAnonymous) {

profile.Phone = phone;

profile.IM = im;

profile.Save();

}

Trida MyWebProfile je trida zapouzdrujici pristup k ProfileBase.

--J.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback