Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval využití a práci s CancellationTokens v asynchronním programování.
Category Archives: Development
HAVIT GIT Workflow Standard [Robert Haken, HAVIT Vzdělávací okénko 14.4.2021]
Záznam ze Vzdělávacího okénka HAVIT z 14. dubna 2021, kde jsem prezentoval náš standard workflow pro používání GIT source control. Je publikován na našem HAVIT YouTube Channelu.
Základní pravidla workflow:
- Jediná vývojářská mainline = master.
- Rebase upřednostňujeme před merge (přehlednější historie).
- Release označujeme tagem „release/…“ (typicky do master).
- Hotfixování = v branch „release/…“ z nasazeného commitu (dle version.txt nebo release-tagu) + nový release tag + merge do master + delete branch
- Feature branching („feature/…“) pouze ve vybraných situacích, pokud vím co chci, proč to dělám a umím to.
- V lokálním repo se invencím meze nekladou, chceme však Continuous Integration (např. častý rebase)
Blazor – životní cyklus komponent [Jiří Kanda, Vzdělávací okénko, 24.3.2021]
Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval životní cyklus Razor (Blazor) komponent:
Havit.Blazor – HxGrid [Jiří Kanda, Vzdělávací okénko, 24.3.2021]
Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval komponentu HxGrid z balíčku Havit.Blazor:
I[Async]Disposable [Jiří Kanda, Vzdělávací okénko, 17.3.2021]
Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda mluvil o IDisposable
, IAsyncDisposable
a vztahu mezi nimi.
OrderBy(e => e.NullableNavigationProperty.SomeValue) v EF Core
Při code-reviews se opakovaně setkávám se snahou ošetřit null
v OrderBy
/Where
a v podobných LINQ extension metodách při použití EF Core. Například
.OrderBy(e => e.BossId.HasValue ? e.Boss.LastName : String.Empty)
Je to obvykle nadbytečné, ba dokonce nežádoucí.
LINQ provider výraz nevykonává, ale překládá do SQL, takže pohodlně funguje
.OrderBy(e => e.Boss.LastName)
přestože Boss
může být NULL
.
Možná takový zápis v C# tahá za oči, ale spíš bych se obával tu expression pro EF Core jakkoliv komplikovat, aby z toho nevznikl nějaký složitější dotaz než je potřeba.
Konkrétně krátká podoba vytvoří SQL klauzuli
ORDER BY [e].[LastName]
a SQL si s NULL
pohodlně poradí, zatímco dlouhá podoba udělá
ORDER BY CASE
WHEN [e].[Id] IS NOT NULL THEN [e].[LastName]
ELSE N''''
END
…což obvykle nepotřebujete a v T-SQL by vás to nejspíš nikdy nenapadalo takhle řešit.
Havit.Blazor stack onboarding [Robert Haken, Vzdělávací okénko, 16.3.2021]
Záznam ze Vzdělávacího okénka HAVIT z 16. března 2021, kde nabízím pohled do nitra naší kuchyně – vstupní seznámení s naším Havit.Blazor stackem.
Nahrávka je publikována na našem HAVIT YouTube Channelu.
Refit – REST API client [Robert Haken, Vzdělávací okénko, 10.3.2021]
Záznam ze Vzdělávacího okénka HAVIT z 10. března 2021, kde jsem povídal o Refit – knihovně umožňující snadné konzumování REST API z .NET pomocí strong-API.
Nahrávka je publikována na našem HAVIT YouTube Channelu.
HTTPS do každé rodiny [Ondřej Václavek, Vzdělávací okénko, 18.11.2020]
Záznam ze Vzdělávacího okénka HAVIT, kde Ondra Václavek povídal o HTTPS, Let’s Encrypt, ACME a dalších tématech z oblasti.
Deplyment aplikací [Jiří Kanda, Vzdělávací okénko, 30.9.2020]
Záznam ze Vzdělávacího okénka HAVIT, kde Jirka Kanda ukazoval, jak nasazujeme aplikace z Azure DevOps Services.