Aspektové programování (Metalama) [Lukáš Michl, Vzdělávací okénko, 26.3.2026]

Jak snížit objem kódu o 20 % bez psaní boilerplate? Aspektové programování s Metalama v .NET (C#).

  • Co je aspektové programování a proč ho použít
  • Jak Metalama funguje – transformace C# kódu přes Roslyn před kompilací (bez IL weaving)
  • Instalace: stačí jeden NuGet balíček
  • Logování metod a exception s parametry
  • Trim property, validace, INotifyPropertyChanged a další built-in aspekty
  • Introduce Dependency Injection bez ručního konstruktoru
  • LINQ dotazy nad zdrojovým kódem (LinqPad integrace)
  • Licencování ($10/měsíc), podpora v Rider vs. Visual Studio

Vzdělávací okénko prezentoval Lukáš Michl.

AI v chytrém domě [Dan Hrubý, Vzdělávací okénko, 19.3.2026]

Jak Dan Hrubý použil AI (NotebookLM, Claude) k diagnostice a optimalizaci chytrého domu Loxone?

  • Co je chytrý dům a jak funguje systém Loxone
  • Proč tepelné čerpadlo nefungovalo efektivně a doma byla zima
  • AI-asistovaná diagnostika: ChatGPT a NotebookLM jako fyzikální poradce
  • Sběr dat z Loxone: Modbus TCP (Atrea) → Node-RED → InfluxDB
  • Claude Desktop: generování Node-RED flow jedním promptem, bez kódování
  • Vizualizace v Grafana – celý dashboard z jednoho AI promptu
  • Výsledek: stabilní regulace zásobníku teplé vody a tepelného čerpadla
  • Plánovaná optimalizace zálivky zahrady

Jak vytvořit AI aplikaci od nuly [Tomáš Wagner, Vzdělávací okénko, 5.3.2026]

Záznam ze Vzdělávacího okénka HAVIT z 5. března 2026. Tomáš Wagner ukazuje, jak krok za krokem postavit AI aplikaci v .NET a C# – od nastavení AI služby přes napojení do aplikace až po pokročilejší funkce jako chat history, tools a strukturovaný výstup.

  • Nastavení AI služby v .NET – OpenAI, Ollama (OllamaSharp) a Microsoft.Extensions.AI
  • Jak napojit AI do .NET aplikace a komunikovat s LLM modely
  • Přepínání mezi AI providery (OpenAI, Anthropic, Google Gemini, Ollama) bez přepisování kódu
  • Chat history – uchování kontextu konverzace
  • System prompts, instructions a tools (function calling)
  • Strukturovaný výstup z AI do C# tříd

Claude Code CLI – sdílení zkušeností s AI [Ondřej Václavek, Vzdělávací okénko, 19.2.2026]

Claude Code CLI v praxi: AI asistent pro .NET vývojáře — zkušenosti, skills, MCP servery a workflow.

Co se dozvíte

  • Claude Code CLI jako alternativa ke GitHub Copilotu (Rider místo Visual Studio)
  • Napojení na Azure DevOps přes MCP server a implementace tasků příkazem
  • Skills v Claude Code: implement a code review — jak fungují a jak je psát
  • Správa kontextového okna — příkaz clear a práce s dlouhými sezeními
  • Plugin marketplace a ekosystém skillů v Claude Code
  • Otevřená diskuze .NET vývojářů o zkušenostech s AI nástoji

Vzdělávací okénko prezentoval Ondřej Václavek.

.NET Aspire Introduction [Martin Goffa, HAVIT Vzdělávací okénko, 12.2.2026]

Záznam ze Vzdělávacího okénka HAVIT z 12. února 2026.
Martin ukazoval základní možnosti Aspire a PoC implementaci v branch NewProjectTemplate-Blazor.

Passkeys v praxi [Dan Hrubý, Vzdělávací okénko, 5.2.2026]

Záznam ze Vzdělávacího okénka HAVIT z 5. února 2026.

Minesweeping [Jiří Kanda, Vzdělávací okénko, 8.1.2026]

Záznam ze Vzdělávacího okénka HAVIT z 8. ledna 2026.

Vývoj softwaru stojí na knihovnách, nástrojích a frameworcích, jejichž autoři dělali rozhodnutí s těmi nejlepšími úmysly. My je pak jako vývojáři používáme – často přesně tak, jak je doporučeno – a přesto se občas aplikace začne chovat nečekaně, výkon kolísá, build trvá, v produkci aplikace nefunguje. Šlápli jsme na minu. Přednáška ukazuje skutečné miny, na které jsem v posledních měsících a letech narazil. U jednotlivých min si ukážeme, jak je umět najít či jak se jim vyhnout. Pokud máte pocit, že děláte všechno správně a stejně to nefunguje, tahle přednáška je pro vás. 💣

Integrační testy konečně správně (Testcontainers) [Ondřej Václavek, Vzdělávací okénko, 11.12.2025]

Záznam ze Vzdělávacího okénka HAVIT z 11. prosince 2025, kde nám Ondřej Václavek ukazoval použití Testcontainers pro integrační testy.

O signaturách metod a DTO a jak je psát [Lukáš Michl, Vzdělávací okénko, 4.12.2025]

Záznam ze Vzdělávacího okénka HAVIT, kde Lukáš Michl povídal o tom, jak psát signatury metod a DTO tak, aby byl kód srozumitelný bez nutnosti číst implementaci. Přednáška pokrývá antipattern primitive type obsession, strong type values, knihovnu Vogen a best practices pro DTO.

Proč záleží na čitelných signaturách

Dobrá signatura metody prozradí, co metoda dělá, aniž by bylo nutné číst její tělo. To je klíčové pro udržovatelnost – kód se k němu vrací za dny, týdny i roky, a čím méně překvapení signatura skrývá, tím méně chyb při refaktorování vzniká. Lukáš ukazuje sérii příkladů z reálných projektů, kde nejasné signatury vedly k neočekávanému chování.

Primitive type obsession antipattern

Používání primitivních typů (string, int) všude, kde by měl být byznysový typ, vede k nejasnostem: co přesně parametr string name očekává? Je to jméno ve formátu AD, nebo zobrazované jméno? Může být null? Může být prázdný? Tyto otázky se násobí pro každé volání metody. Podobný problém nastává u ID entit – pokud jsou UserID, LoginID i EntityID reprezentovány jako int, záměna při refaktorování neprojde kompilátorem a může tiše způsobit datovou chybu.

Nullable reference types

Zapnutí nullable reference types (#nullable enable) je prvním krokem ke čitelnějším signaturám – kompilátor okamžitě sdělí, zda parametr nebo návratová hodnota může být null. Samo o sobě to ale nestačí, pokud jsou parametry stále primitivní typy bez byznysového kontextu.

Strong type values a value objects

Řešením primitive type obsession jsou strong type values – vlastní typy obalující primitivní hodnotu a nesoucí byznysový kontext i validaci. Implementují se jako C# record struct, čímž se předchází dvojité alokaci na heapu. Validace v konstruktoru zajistí, že nevalidní hodnota vůbec nevznikne – testy kontraktu pak stačí napsat jednou u definice typu, ne u každého volání metody.

Knihovna Vogen

Vogen je source-generátorová knihovna, která automaticky generuje plnohodnotné strong-typed hodnoty – včetně serializace JSON, podpory Entity Framework a možnosti přidávat validace. Bez ní by bylo ruční psaní pro stovky byznysových typů v projektu neúnosné; s Vogen stačí jedna řádka atributu nad definicí.

Strong Typed ID

Specifickým případem jsou ID entit. Knihovna StronglyTypedId řeší záměnu identifikátorů různých entit na úrovni typového systému – kompilátor odmítne předat UserId tam, kde se očekává OrderId.

DTO best practices

Suffix DTO v názvu třídy je kontrakt: objekt by měl být immutable a sloužit výhradně k přenosu dat. Lukáš doporučuje vlastnosti deklarovat s required init – přidání nové vlastnosti pak okamžitě způsobí chybu kompilace u všech míst, kde se DTO inicializuje, a zabrání tiché inicializaci výchozími hodnotami. Kombinace s konstruktorovým zápisem navíc zajistí, že kolega přistupující ke kódu poprvé okamžitě vidí, co všechno DTO nese.

Novinky v .NET 10 a výhled na .NET 11 [WUG Dev Day Praha, 26.1.2026]

Záznam z přednášky pro konferenci WUG Dev Day Praha z 26. ledna 2026.

Co se dozvíte

  • .NET 10/11 timeline – STS prodlouženo na 2 roky, LTS na 3 roky
  • C# 14 – extension members: nová syntaxe s klíčovým slovem extension
  • C# 14 – klíčové slovo field v getter/setter, null conditional assignment (?=)
  • C# 14 – partial constructors/events, user-defined compound assignment operátory
  • .NET 10 Runtime – JIT devirtualizace, deabstrakce a výkonové optimalizace
  • BCL – string comparer s numeric ordering, LINQ left/right join, WebSocket stream
  • System.Text.Json – cyclic references v source generators, strict preset
  • SDK – dotnet tool exec, file-based apps (jednořádkové C# scripty), package pruning
  • ASP.NET Core – OpenAPI 3.1, validace na Minimal API, ochrana před open redirect
  • Blazor – přehled nejvýraznějších novinek v .NET 10
  • Výhled na .NET 11 a C# 15

Slides