Vyúčtování.com

Byli jsme takhle jednou na dvoutýdenním road-tripu po Skotsku a během něj jsme všichni střídavě platili různé společné výdaje: benzín, erární jídlo, mapy, parkování atd. Když jsme se pak vrátili domů bylo potřeba sepsat všechny účty, rozdělit výdaje a určit kdo kolik a komu dluží. V té době jsem si řekl, že by bylo fajn mít online aplikaci, kam by všichni přidali účty, co platili, a ona by pak všechno spočítala. Deštivé léto si zatím moc neužívám, ale alespoň zbylo trochu času na to, abych to konečně naprogramoval, a říkal jsem si, že by se taková aplikace mohla hodit třeba i dalším: vyuctovani.com.

GraphViz pro .NET: generování „pěkných“ grafů ve WPF

GraphViz je software pro vizualizaci grafů. Může tedy sloužit například k „přehlednému“ zobrazení grafu přátel na Facebooku. GraphViz jako takový poskytuje pouze program pro příkazovou řádku, pomocí kterého lze grafy generovat do různých grafických formátů nebo do textového formátu reprezentujícího informace o layoutu. Pokud bychom chtěli takový graf zobrazit ve WPF, můžeme použít komponentu Image, ale co kdybychom chtěli, aby součástí vygenerovaného grafu byly i „živé“ prvky, například klikatelné tlačítka, select boxy a podobně? V takovém případě je tu Graphviz4Net, který umí zpracovat textový výstup GraphVizu a aplikovat informace o layoutu daného grafu na libovolné WPF komponenty.

More… »

Návrhový vzor Visitor

V tomto článku se podíváme na zoubek návrhovému vzoru Visitor a jeho implementaci v C# bez použití i s použitím Reflexe. Tento návrhový vzor patří k těm složitějším a kvůli svému ne úplně šťastně zvolenému názvu je často zdrojem nejasností i pro zkušenější programátory. Domnívám se, že problém často vězí v nepochopení účelu a motivace pro tento vzor, proto se na začátku článku zaměříme na tyto aspekty a pak až se podíváme na implementaci samotného vzoru.

More… »

Mono.Cecil: How to get all base types and interfaces with resolved generic arguments

Following code is the result of a discussion in the mono-cecil user group. If you don’t know what Mono.Cecil is, this post probably does not contain much information for you. However, you could check out this great library and maybe come back later.

More… »

Seriál o Code Contracts na programujte.com

Před pár dny vyšel na portálu programujte.com úvodní díl mého seriálu o Code Contracts.

Enterprise Library: konfigurace ve více souborech

V enterprise aplikacích je třeba postarat se o věci jako je logování, robustní zracování výjimek nebo o nastavení IoC kontejneru. Pokud nechcete psát kompletně vlastní infrastrukturu pro tyto účely, nabízí se MS Enterprise Library.

Entlib, jak se její jméno obvykle zkracuje, uchovává konfiguraci hlavně v xml souborech a to především v App.config případně Web.config. Konfigurace Entlib může být pěkně rozsáhlá a orientovat se v jednom obrovském xml souboru, to nemusí být jednoduché. Nehledě na typické problémy se systémem správy verzí (svn/mercurial/git/…) V následujícím obrázkovém návodu ukážu jak nastavit Entlib tak, aby konfiguraci brala z více souborů.

More… »

Kontrakty a unit testy

Jak se změní svět unit testování, když začneme používat kontrakty?

More… »

Pokročilejší regulární výrazy v .NET

Pokud jste se někdy setkali s regulárními výrazy v souvislosti s vyhledáním a nahrazením, pak jste pravděpodobně přišli do styku i s pojmenovanými skupinami (named capturing groups). Jak už to bývá syntaxe v tomto směru není jednotná, a proto jsem si připravil pár příkladů na využití této featury v .NET.

More… »

Customizace buildu ve VS — automatické spuštění unit testů

Kompilátor nám u staticky typovaných jazyků pomůže odhalit spoustu chyb už při tzv. compile time, nebo-li když ve Visual Studiu stiskneme známou klávesovou zkratku CTRL+SHIFT+B. Kdo se nespokojí pouze s kontrolou typů a chce psát spolehlivější software, kromě kompilátoru užívá automatizovaných testů, především unit-testů. V tomto smyslu by se unit-testy daly chápat jako nadstavba kontroly kompilátorem, tak proč je také nespouštět hned po každé kompilaci? (Mimochodem uvědomme si, že unit-testy by měly být z definice rychlé, takže by jejich běh kompilaci neměl tolik zdržet.)

More… »

Entity Framework Code First a enumy

Už je to nějaká chvíle, co jsme se na blogu Scotta Guthrie mohli dočíst o „Code-First“ featuře Entity Frameworku. Pro mě to byl moment, kdy jsem začal o EF uvažovat jako reálné alternativě k NHibernate. EF nicméně stále neumí spoustu věcí, které jsou u NH samozřejmostí. Třeba takové mapování enumů, s čímž jsem se nedávno musel vypořádat. Řešení, která jsem našel na googlu mi úplně nevyhovovala, tak jsem použil vlastní způsob.

More… »