V předchozím článku jsem ukázal jednu možnost, jak implementovat v ASP.NET MVC (libovolné verze!) „sidebar widgety“. V tomto článku bych rád ukázal další možnosti realizace widgetů, na které nebyl v předchozím článku prostor. Ale ani tento článek není kompletním výčtem všech možností…
Celý příspěvek
Category Archives: Programování
Jak na widgety v ASP.NET MVC
Už několikrát jsem dostal otázku, jak udělat v ASP.NET MVC „widgety“, tedy „komponenty“, které jsou někde na okraji každé stránky. Slyšel jsem názory, že ASP.NET WebForms jsou mnohem více nakloněny komponentovému vývoji (souhlasím) a tak je vývoj takových komponentových udělátek ve WebForms mnohem jednodušší než v MVC – s tím si ale dovolím nesouhlasit. Aby byl člověk schopen napsat kvalitní komponentu ve WebForms, tak je nutné tento framework znát velmi zevrubně. A v ASP.NET MVC je to úplně stejné – pokud znáte MVC dobře, tak dokážete i v MVC pohodlně napsat widgetový systém. Mé řešení vám ukáži v tomto článku.
Celý příspěvek
Zamyšlení nad NoSQL
NoSQL je buzzword, který je tu s námi téměř už tři roky, přesto je pro mnohé lidi velkou neznámou, případně symbolem vzpoury proti zlým ošklivým přežitým enterprise SQL databázím. Rád bych se s vámi podělil o můj pohled na NoSQL, který je ovlivněn hlavně více než rokem používání Cassandry.
Celý příspěvek
Pojďte pracovat do AVASTu!
AVAST is hiring! Pokud chcete pracovat ve firmě, jejíž produkt má více než 130 miliónů uživatelů, ale máte strach, aby Vás nesešrotoval velký moloch, pak práce v AVASTu může být to pravé. Žádný dress-code, žádný open-space, žádný „manager“, který Vám bude stát s bičem za zády a diktovat nesmyslné požadavky nebo Vám vyčítat, že jste věnovali hodinu sebevzdělávání (třeba formou čtení Augiho blogu ;-)).
Každá mince má ale dvě strany, takže relativní svoboda v práci je vyvážena požadavkem na samostatnost, smysl pro pořádek a schopnost sebemotivace.
Celý příspěvek
Průběžná integrace
Continuous integration je volně řečeno souhrn praktik a nástrojů, při kterých vývojáři integrují (commitují) své změny často (typicky alespoň jednou za den). Každá integrace je automaticky ověřena testy a případně může vést až k automatickému nasazení nové verze aplikace (continuous delivery), v případě neúspěchu k okamžitému reportování problému.
Přínosy continuous integration jsou především zrychlení vývoje, rychlejší dodávání nových verzí a snížení chybovosti – to vše díky automatizaci co nejvíce úkonů, které je třeba dělat při vývoji, testování a nasazovaní aplikace.
Všechno by to šlo implementovat pomocí vzájemně provázaných skriptů, ale za šťastnější řešení (i když zavádí SPOF) považuji nasazení nějakého integračního serveru coby hlavního koordinátora všech operací. Integrační server toho pro nás může ale dělat ještě více – např. provázat buildy a verze aplikace s bug trackerem nebo issue trackerem (Bugzillou, Mantisem, Jirou, …). Integrační server se tak může stát místem, na kterém vidíte vše o projektu (a slovo integrační tak dostává další rozměr).
V tomto článku bych vám rád popsal, proč a jak jsem nasazoval integrační server já. Moc jsem toho o průběžné integraci předem nenastudoval, přistoupil jsem k věci celkem pragmaticky – cílem bylo vyřešit problémy, které mě trápili. A díky TeamCity jsem byl schopen do týdne rozjet prakticky vše, co jsem plánoval – tedy build Solution s více než 100 projekty (C# a C), spuštění unit testů, integračních testů, nasazení a spuštění akceptačních testů. Všechno samozřejmě plně automaticky, odpálené commitem do SubVersion.
Celý příspěvek
Unit testy a globální stav
Unit testy a globální stav – jak to jde dohromady? Vůbec! Za žádných okolností! Takové bylo pro mě hlavní poselství přednášky Miška Heveryho z Googlu, kterou měl v březnu 2011 na ČVUT. Pokud chcete psát dobrý (dobře testovatelný) kód, tak se opravdu použití globálního stavu vyvarujte. Jak ale identifikovat přítomnost globálního stavu v kódu?
Celý příspěvek
Architektura aplikace podle DDD
I když se o návrh architektury aplikací zajímám už nějaký ten pátek, stále si připadám jako bych byl na začátku – inu je to téma, které není vůbec jednoduché a postupem času se navíc komplikuje, jak se dostávají do popředí zájmu nové technologie (NoSQL, HTML5) nebo náhledy na věc (CQRS, messaging, pub/sub). Proto jsem se rozhodl sepsat tento článek, který neberte jako dogma, ale jen jako soupis mých aktuálních myšlenek a chápání architektury aplikace, který by měl rozpoutat diskuzi. Nemyslím si, že by existoval jediný správný přístup, ale o to by mohla být naše diskuze zajímavější 🙂
Celý příspěvek
Closures v C#
Často opomíjenou, o to zajímavější a užitečnější, vlastností jazyka C# je podpora closures. A co že to vlastně closure (uzávěr) je? Wikipedie říká, že je to first-class function s volnými proměnnými, které jsou vázány k lexikálnímu prostředí. A co že to tedy je? 🙂
Celý příspěvek
Pár postřehů k Dependency Injection
Jak známo, existuje více způsobu, jak zajistit nainjectování závislostí do konkrétní třídy. Nejčastější jsou IMHO constructor injection (injectované typy jsou typy parametrů konstruktoru) a property setter injection (injectované typy jsou typy properties). Problém, který mám s druhým typem, je ten, že kontejner musí při konstrukci objektu vědět, které properties má zpracovat. To dává klasicky třída najevo tím, že se daná property označí atributem, specifickým pro jeden konkrétní kontejner. A právě takové zabordelení je to, co se mi na property setter injection nelíbí.
Nabízí se ale několik řešení, jak se vyhnout použití specifických atributů a tím snížit zabordelení kódu.
Celý příspěvek
Moderní programování v C#
Programování pro platformu .NET mi vždy přišlo (např. ve srovnání s J2EE) tak trošku jako divočina. O návrhových vzorech, testování a pružnějších technikách vedení projektů vědělo jen pár vyvolených (nezřídka kdy přicházejí právě ze světa Javy), běžnému programátorovi pojem „návrhový vzor“ evokoval tak maximálně „singleton“. A podle toho aplikace mnohdy vypadaly – netestova(tel)né, obtížně rozšiřitelné, monolity. Klidně se přiznám, že i já jsem byl takový programátor. Zkrátka, nebylo mezi vývojáři v .NETu povědomí o správném návrhu aplikací. Naštěstí se v poslední době začíná blýskat na lepší časy. Nejen blogeři píší o různých způsobech návrhu aplikací, ale i sám Microsoft odvedl na tomto poli kus práce – zpopularizoval návrhové vzory pro prezentační vrstvu díky ASP.NET MVC a MVVM, implementoval podporu pro POCO v Entity Frameworku, dotáhl do použitelné podoby kontejner Unity…
V tomto článku bych rád nastínil, které principy vedly v poslední době k rapidnímu zvýšení kvality mých aplikací. Konkrétně se zaměřím na SOLID, TDD, IoC/DI a AOP.
Celý příspěvek