Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ahoj kluci, minulý týden jsme si v soutěži zkusili jednoduchou webovou aplikaci v ASP.NET MVC. Pokud jste soutěž prošvihli nebo se vám nezadařilo, máte nyní jedinečnou příležitost, protože je stejné zadání, pouze pro technologii ASP.NET Web Forms. Ta je starší, v podnicích však stále používanější. Tutoriály jsou zde, stačí si to přečíst: http://www.itnetwork.cz/…net/webforms Znalosti se vám v praxi opravdu hodí.

Připomenu, že hrajeme o placku Machr a samolepky. Zadání úlohy je jednoduché. Vytvořte webovou aplikaci v ASP.NET Web Forms, která vypočítá modus (nejčastěji se vyskytující prvek) z čísel zadaných ve formulářovém poli. Čísla jsou zadaná slovy a jsou vždy do 100, oddělená jsou čárkou.

Pokud je modů více, např. pro vstup:

sto, padesát šest, dvacet, sto, padesát šest

budou vypsány všechny, zde tedy 100, 56.

Mody budou vypsané čísly. Snažte se o co nejhezčí kód a efektivní řešení.

Čas je do pondělí 27.1. do 10:00.

Podrobnější pravidla soutěží jsou zde: http://www.itnetwork.cz/…outezi-machr

Editováno 21.1.2014 16:35
Odpovědět 21.1.2014 16:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Jakub Lásko[Saarix]:

Tak snad už se teď více zadaří :-)

Nahoru Odpovědět 21.1.2014 17:10
Časem je vše možné.
Avatar
Nahoru Odpovědět 21.1.2014 17:13
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jakub Lásko[Saarix]:

Taky tady je první verze mého řešení: https://skydrive.live.com/redir?…
PS. možná ještě dojde na nějaké úpravy ;)

Jo a také web: http://laskoproject.asp2.cz/MainPage.aspx

Nahoru Odpovědět 21.1.2014 18:05
Časem je vše možné.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jakub Lásko[Saarix]
Ondrca:

Mohl by sis ošetřit blbuvzdornost.
Když nezadám nic nebo čísla hází to na mne error.

Nahoru Odpovědět  +1 21.1.2014 18:09
Zase jsem o něco chytřejší
Avatar
Odpovídá na Ondrca
Jakub Lásko[Saarix]:

Jo jasně na to jsem teď taky myslel, tak to tam ještě teď budu doplňovat :-)

Nahoru Odpovědět 21.1.2014 18:27
Časem je vše možné.
Avatar
Ondřej Štorc:

Zde přidávám svoji verzi: Google Disc

Nahoru Odpovědět 21.1.2014 18:51
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Nahoru Odpovědět 21.1.2014 19:07
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Nahoru Odpovědět 21.1.2014 19:56
Nesnáším {}, proto se jim vyhýbám.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
Zdeněk Pavlátka:

Místo mezery dej pomlčku. padesát-osm funguje.

Nahoru Odpovědět  +1 21.1.2014 20:12
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Michal Žůrek (misaz)
Ondřej Štorc:

Udělal jsem to tak že, cokoliv co vybočuje z pro zadaní dostane hodnotu 100 + pozice ve větě, ale je pravda že bych to mohl udělat tak že i mezera bude platný separátor.

Nahoru Odpovědět 21.1.2014 20:12
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Michal Žůrek (misaz):

Ahoj,
jen tak mimo přidávám svůj výtvor, nemusíte to ani hodnotit.
Online: http://misaz.asp2.cz/
Download: http://misaz.moxo.cz/…ms-modus.zip
Algoritmus je převzatý z minulého machra, takže je ve VB.

Nahoru Odpovědět 21.1.2014 20:33
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jakub Lásko[Saarix]:

Tak už je to i blbu vzdorné :-)
Projekt: https://skydrive.live.com/redir?…
Web je stejný ale: http://laskoproject.asp2.cz/MainPage.aspx

Editováno 22.1.2014 16:48
Nahoru Odpovědět 22.1.2014 16:48
Časem je vše možné.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jan Vargovský:

Interaktivita s uživatelem vypadá opravdu vtipně :D Alá nemíchej angličtinu a češtinu.

 
Nahoru Odpovědět 22.1.2014 16:57
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
Zdeněk Pavlátka:

Co to používáš za font? Strašně se mi líbí.

Nahoru Odpovědět 22.1.2014 17:05
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět 22.1.2014 17:09
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Petr G
Redaktor
Avatar
Petr G:

Ahoj .. tak snad jsem vytvořil lepší verzi než minulý týden :)
https://dl.dropboxusercontent.com/…as_Modus.rar

 
Nahoru Odpovědět 22.1.2014 18:24
Avatar
Odpovídá na Jan Vargovský
Jakub Lásko[Saarix]:

Ajo vidíš toho jsem si vůbec nevšiml, že jsem to namýchal :-) Je to trochu komické ;)

Nahoru Odpovědět 22.1.2014 18:56
Časem je vše možné.
Avatar
Odpovídá na Zdeněk Pavlátka
Michal Žůrek (misaz):

Ano Quartz MS našel jsem ho na google font galery. Asi bych to neměl sdílet, tak ti nedám odkaz. Můžeš si ho vyšťourat sám.

Nahoru Odpovědět 22.1.2014 19:01
Nesnáším {}, proto se jim vyhýbám.
Avatar
Ondřej Štorc:

Přidávám další verzi ve která je nápověda pro uživatele a bylo také upraveno zobrazování chyb
Download: https://drive.google.com/…Njd3blk/edit?…
Online: http://arakamus.aspone.cz/

Editováno 23.1.2014 10:40
Nahoru Odpovědět 23.1.2014 10:35
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jakub Lásko[Saarix]:

Tak jdem nakonec ještě malinko opravil vyjímky. ;)
Projekt: https://skydrive.live.com/redir?…
Web je stejný

Nahoru Odpovědět 23.1.2014 14:01
Časem je vše možné.
Avatar
Nikola Sterziková (PaNika):

Tak já bych se taky připojila se svým skromným výtvorem...
http://leteckaposta.cz/263389892

 
Nahoru Odpovědět 25.1.2014 0:10
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Krásné dopoledne, tak jsem na to kouknul a:

  • Arakamus - Jakmile třídu nazveš zpracovávač, tak je v návrhu něco špatně. To samé, když se proměnná jmenuje Chyba a nad ní je komentář "Počet chyb v zadání". Snad tedy PocetChyb nebo alespoň Chyby. "xnáct" - diakritika v identifikátorech? Zase, metoda RozdelPole(), očekával bych, že rozděluje nějaké pole, ale ona bere string a separátor. Možná ti to přijde jako hlouposti, jenže až budeš dělat větší projekt, tak tě tyhle chyby odrovnají. Výpočet modu je také nějaký divný, proč něco přidáváš do kolekce a potom to mažeš když zjistíš, že to byl špatný výsledek? Můžeš si jednoduše zjistit maximum metodou Max(). Hodil by se nějaký validátor.
  • Jakub[Saarix] - Třída value mi přijde k ničemu, místo ní bys mohl použít obyčejný slovník. Do Collection bych to přidával jinak než těmi 100 řádky, to jsem již psal minule. Třída Number mi také přijde zbytečná, většinou když děláš jen takovéhle struktury o pár proměnných, tak je v návrhu něco špatně. Přijde mi lepší používat validátory z ASP.NET než si psát nějakou vlastní logiku. Minimálně na RequiredValidator, formulář se takhle zbytečně odesílá nevyplněný na server. Chválím výpočet modu. Za toto řešení dávám placku.
  • Girtas - Výpočet modu vypadá cool, aplikace však buguje když je více modů, zadej si tohle: "jedna, pět, osmdesát tři, osmdesát tři, sto, jedenáct, jedenáct, padesát, padesát"
  • misaz - Na maximum je v LINQ extension metoda, Helper je zbytečný. Řešení je OK jako minule, placku už máš :P
  • PaNika - Logický kód je napsaný v prezentační části, měla by sis vytvořit oddělené třídy, např. PrevadecCisel a PocitacModu. Metoda ZjistitModus() by tak vůbec nevěděla o labelu, což je správně. Jakmile ji budeš chtít teď použít znovu pro jiný účel (třeba udělat druhý formulář, který modus uloží do souboru místo do labelu), tak budeš mít problém. Proto by ty metody měly být ve třídách a být úplně univerzální. K chybovým stavům se používají výjimky. Místo foreache a odstraňování čárky na konci lze použít metodu Join na Stringu, pak je to na 1 řádek. Logicky to řešení není vůbec špatné, příjemně jsi mě překvapila, je to asi nejlepší holčičí kód co jsem kdy viděl :D Musíš si ale načíst něco o tom, jak se navrhují aplikace a jak se odděluje logika a prezentace. Na devbooku je o tom napsáno poměrně dost.

Placku získává Jakub Lásko[Saarix], prosím o publikaci a napiš x :) Všem ostatním děkuji za účast a těším se příště.

Editováno 27.1.2014 11:24
Nahoru Odpovědět 27.1.2014 11:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Jakub Lásko[Saarix]:

Děkuji monohokrát a je pravda že místo té jedné třídy jsem spíše mohl použít slovník :( Ale jak se říká nic není dokonalé ;)

Nahoru Odpovědět 27.1.2014 12:38
Časem je vše možné.
Avatar
Odpovídá na David Čápka
Nikola Sterziková (PaNika):

Díky za zpětnou vazbu, je fakt, že při jednoúčlových malých aplikacích strukturu tříd neřeším kvůli času, ale chtělo by to...
Články si přečtu. Tady na Devbooku se mi články moc líbí, jsou hezky logicky psané. :-)

Nevím, jestli jsem správně pochopila vyjádření k vyjímkám, ale vyjímky se snažím raději nepoužívat, jednak kvůli vlivu na výkon (např.:http://msdn.microsoft.com/….110%29.aspx) a pak, protože si myslím, že by se vyjímky měly používat spíše na neočekávané stavy.
Ale třeba jsem to jen nepochopila, a třeba je to taky jen věc názoru ;-).

Díky za String.Join, to jsem neznala..

Každopádně díky.
PaNika

 
Nahoru Odpovědět 27.1.2014 14:38
Avatar
Petr G
Redaktor
Avatar
Odpovídá na David Čápka
Petr G:

Díky za hodnocení .. Už jsem to opravil :) Tam testuji, jestli se číslo již ve slovníku nachází a pokud ano tak mu přičtu hodnotu a vrátim true. No a tam byl ten problém, že když vrátim true, tak pak se mi nevynulovali proměnné a proto to bugovalo :(

 
Nahoru Odpovědět 27.1.2014 18:04
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Nikola Sterziková (PaNika)
David Čápka:

Výjimek se určitě neboj, hodí se pro všechny chybové stavy a všechny robustní aplikace je hojně využívají. Údržba kódu je bez nich nepříjemná a celý .NET je postavený na výjimkách. Ten link co jsi poslala jen říká, že bys neměla vyhazovat výjimky v situacích, kde dochází více k chybám než k úspěchu, potom by to bylo opravdu pomalé.

Nahoru Odpovědět 28.1.2014 21:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.