Zobrazují se příspěvky se štítkemProgramování. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemProgramování. Zobrazit všechny příspěvky

sobota 9. prosince 2017

Jak se vyhnout chybě CA1303: Do not pass literals as localized parameters

 Pokud je zapnuta analýza kódu a nastavena většina pravidel, stane se při zavedení nové metody, která používá jako parameter string a jejím volání, že kompilace kódu skončí chybou.

Ono je to technicky vzato varování, ale lze si v projeku nastavit, že tato varování budou považovány za chybu.

pondělí 7. srpna 2017

Vývoj na VM v Azure - má to smysl a nebo ne?

Při hledání možností, jak usnadnit práci novým kolegům na našem projektu byla jednou ze zvažovaných možností i použití virtuálního počítače v Azure. Nápad byl asi takový, že si uděláme předlohu, tedy ideální pracovní stroj, kde již budou nainstalovány všechny používané aplikace. Tedy mimo samozřejmého Visual Studia i všechny další nástroje pro práci s kódem, všechny potřebné SDK, testovací nástroje a další.
 Nováček by si tak jen na pár kliků na Azure portálu vytvořil svoji instanci, nastavil potřebné přihlašovací údaje a mohl tak prakticky ihned začít pracovat. 

středa 19. července 2017

StreamReader nebo ReadAll

Výsledek obrázku pro performanceV miniseriálu o funkcionálním programování jsem se zabýval zpracováním CSV souboru. Soubor, tedy textový dokument, jakým je CSV, můžeme v zásadě zpracovávat dvěma způsoby: vše načíst do paměti a nebo využít stream.

čtvrtek 22. června 2017

Funkcionální programování podruhé


Jak implementovat funkcionální přístup ukážu na jednoduchém validátoru CSV souboru. Je to poměrně jednoduchá úloha s těmito třemi zásadními operacemi:

  • z prvního řádku je nutné získat seznam sloupců
  • z následujících pak
    • získat seznam hodnot název sloupce - hodnota
    • jeden ze sloupců obsahuje primární klíč, duplicitní řádky tedy musíme vyloučit

úterý 20. června 2017

Zmatky v práci s AD

Active Directory je Microsoftí implementace adresářových služeb LDAP. A jak je MS dobrým zvykem, pokud chce programátor s touto službou spolupracovat, může si vybrat hned z několika možností.
Ty se navíc liší výkonem a možnostmi, takže je zkrátka asi nejlepší vědět a znát všechny - vždy mne překvapuje, jak i firma velikosti MS nedokáže dotáhnout některé věci k použitelnému stavu.


sobota 17. června 2017

Funkcionální programování

V poslední době jsem začal více využívat ve svém kódu principy funkcionálního programování. Zčásti to začalo použitím vzoru Maybe, ale rozvinul jsem to dále a zkušenost to byla tak dobrá, že se o ní podělím.

Hned na začátek pro ty, co mají přístup ke kurzům na pluralsight, uvádím odkaz na dobrý kurz, který vše pěkně dopodrobna vysvětluje - Applying Functional Principles in C# od Vladimira Khorikova.

Tento pán má i své vlastní stránky a dostupná je i knihovna s níže popsanými třídami

neděle 25. září 2016

Konfigurace metody

Postupy zmíněné v článcích o konfiguračních souborech - zde a zde - jsem využil a udělal jsem si knihovnu pro vytvoření objektu a jeho naplnění hodnotami z konfigurace. Nicméně při sepisování požadavků jsem narazil na problém, že předání všech možných kombinací nastavení do objektu, respektive metody) by vedlo k mnoha přetížením dané  metody a celkově obtížnější orientaci v kódu (používám Code Analysis a tedy nejde jen tak použít nepovinné parametry, metoda se musí přetížit). 

čtvrtek 15. září 2016

Pár tipů pro práci s Visual Studiem - Cops and Resources

Pokud píšete kód a používáte pro jeho kontrolu jak Code Analysis (aka FxCop), tak i StyleCop, tak vás jejich hlášky, samozřejmě v závislosti na zapnutých pravidlech, dokáží někdy dovést k šílenství, či alespoň k jeho okraji. Zejména pokud neprochází i vygenerovaný kód, a to i v případech, že se o něj postaraly knihovny a nástroje od firmy Microsoft.

úterý 9. srpna 2016

Načtení objektu z konfiguračního souboru - 2

Nedávno jsem zde popsal způsob, jak snadno  načíst hodnoty z konfiguračního souboru do objektu v případě, že se použije appSettings a název klíče odpovídá názvu vlastnosti třídy. Někdy ale existuje požadavek vyjádřit konfiguraci více klasicky, tedy pomocí xml. I když :NET framework poskytuje způsob, jak xml z konfiguračního souboru převést na objekt, je tato možnost dle mého názoru krkolomná a lze to i jednodušeji.

neděle 31. července 2016

Poznámky z code review - čekací smyčky

Někdy je potřeba provést operaci, která může déle trvat. Navíc v případě, že se tato operace provádí delší než maximálně očekávanou dobu, je pak obvykle nutné provést nějakou další operaci - například prodloužit "zámek" nad vzkazem ve frontě apod. Obvykle se tedy spustí čekací smyčka, která hlídá nepřekročení časového limitu a je zrušena po úspěšném provedení hlavní operace.

pondělí 20. června 2016

Načtení objektu z konfiguračního souboru

V poslední době jsem narazil na pár projektů, kde jsou konfigurační hodnoty zapsány ve formátu, kterému pracovně říkám "flat".  Programátor nepoužil některou z obvyklých technik, ale místo toho v klíči  elementu v appSettings zachycuje částečně strukturu objektu a třídy a  poté určuje její hodnotu v atributu value.

středa 15. června 2016

Unit testy bez mockování


Při testování lze občas narazit na situace, kdy je napsání unit testů běžně zažitým způsobem nemožné a nejde použít ani mockování. Například proto, že v kódu je použita uzavřená (sealed) třída, která ani neimplementuje žádné rozhraní. To je například případ některých tříd pro přístup k datům na Azure, ale i mnoho dalších. I přesto se dá ale unit test napsat.

pondělí 11. dubna 2016

Linq a pracovní pohovor


Zjišťovat znalosti Linqu u pracovního pohovoru může být obtížné - s Linqem se asi setkal každý C# programátor, ale vždy záleží, do jaké hloubky se s touto technologií seznámil a jestli je si vědom některých záludností - a to nemusí být až tak snadné zjistit. 

pátek 8. dubna 2016

Linq - k čemu použít Aggregate

K jednomu z předchozích článků, ve kterém jsem dal k dispozici cheatsheet pro Linq, se mne jeden známý zeptal, k čemu že je dobrý Aggregate - vždy si zatím vystačil například se Sum, Count či Average.

Nejlépe se vysvětluje na příkladě a zabrousím do oblasti hudebních alb: máme řetězec obsahující seznam délek jednotlivých skladeb a chceme získate celkový čas alba. 

středa 16. března 2016

Příklad na pohovor s programátorem - hotovost v pokladně

Na blogu jsem uveřejnil několik příkladů z pohovorů s uchazeči o místo programátora. Dovolím si tedy uveřejnit jeden z dalších možných příkladů, se kterým se lze setkat - na předešlé příspěvky jsem dostal emailem poměrně dost reakcí a překvapilo mne, že poměrně hodně lidí považuje příklady za jednoduché. Těžko to soudit, ale z mých několikaletých zkušeností ze zadávání podobných úkolů zvládne zadání implentovat méně než třetina kandidátů - a  zcela uspokojivých jsou pak tak jedno až dvě řešení z deseti.  Ono v poklidu u pracovního stolu vše vypadá jinak.

středa 10. února 2016

Vícevláknové zabíjení draků

Jeden z nejlepších průvodců základy vícevláknového programování pro mne byl a vlastně pořád je web od Josepha Albahari na adrese http://www.albahari.com/threading/.

Stručný a jasný popis, navíc ke stažení jako pdf, i když napsaný před mnoha lety, tak pořád aktuální.  A může být něco ještě lepšího?


pondělí 8. února 2016

LINQ - cheat sheet

Ve třech příspěvcích v poslední době jsem zmínil použití LINQu - byl to příspěvek jak vytvořit xml vstup pro SQL server, pak popis distinctu pěktrát jinak a nakonec byl LINQ použit i v řešení úlohy z pohovoru v článku Uspěli byste na pohovoru? Podruhé
LINQ je na jednu stranu jednoduchý prostředek pro práci s kolekcemi, na druhou stranu je velmi mocný a dovoluje jednoduše vyjádřit operace, které by jinak vyžadovali složitější zápis ve smyčkách. Nehledě na možnosti, které přináší při práci s data v databázích a datových souborech.

pátek 5. února 2016

Uspěli byste na pohovoru? Podruhé...

Jednou za čas přibíráme do týmu nové lidi - což znamená hodně pohovorů s uchazeči.  Jak jsem už napsal tady, tak spíše upřednostňuji rozhovor nad kouskem kódu - přitom se nejedná o žádné záludnosti. Uchazeč dostává také za úkol něco malého naprogramovat - jen je trochu potíž najít to správné zadání. Úkol by neměl být úplně triviální, ale zase nemůže být těžký. Většina lidí je navíc nervozní, ať již více čí méně a i to je třeba zohlednit.  Takže následující úloha se může v případě, že si ji čtete doma, v klidu, jevit jako velmi jednoduchá, možná až primitivní.

Monitor pro vývojáře

Nedávno jsem si vybral laptop, nyní jsem si chtěl dopřát i lepší externí monitor - obrazovka laptopu je malá a pohodlí práce před velkým monitorem je k nezaplacení. U výběru pracovního monitoru ale mám jasno - už dlouho používám jen monitory značky Dell a řady Ultrasharp. Poměr cena a užitná hodnota mi u nich přišel vždy nejlepší, navíc polohovatelný stojan je pro práci příjemný, stejně jako možnost natočit si třeba druhý monitor "na výšku".

pondělí 1. února 2016

Visual Studio 2015 - deset zajímavých rozšíření


Visual Studio je v nové verzi 2015 zase o kousek dokonalejší než předchozí verze. Ale samozřejmě není naprosto dokonalé a tak při své práci pořád používám nějaká rozšíření. Pokud možno bezplatné - šetří se všude a tak koupě licence nějakého ryze komerčního produktu často není možná. Takže tady je seznam deseti rozšíření, která mám nainstalována.