Rover, czyli zwizualizuj kod Terraform

To prawda, istnieje komenda terraform graph, która w połączniku z narzędziem graphviz daje możliwość wygenerowania grafu. Notabene, jest to zalecane podejście. Niestety to podejście było dla mnie niewystarczające, ponieważ mój graf był dość duży, co za tym idzie, poruszanie się po nim było naprawdę trudne/irytujące. Potrzebowałem czegoś więcej.
Continue reading

.NET Core boilerplate, czyli mój projekt wzorcowy

UPDATED: Boilerplate został zmigrowany do .NET 6!

Boilerplate to kawałek kodu, który w szybki sposób pomaga wystartować pisanie kodu. Pewnego rodzaju szablon. Zamiast startować z pustym projektem i dodawać za każdym razem od nowa te same cegiełki, możemy posłużyć się boilerplatem, który te cegiełki już zawiera.

Ostatnimi czasy kilka razy tworzyłem od początku aplikację w .NET Core, a w ramach tej aplikacji odpowiedni zestaw projektów oraz komponentów. Za każdym razem schemat postępowania był bardzo podobny – w jednym projekcie API, w kolejnym projekcie warstwa dostępu do danych oraz kawałek biznesu, następnie projekty z testami. Typ projektu determinował załączone NuGetowe paczki, konfigurację oraz klasy bazowe, które po wielokroć były identyczne. Na koniec “strażnicy” jakości kodu, oni również identyczni w każdej z nowopowstałych aplikacji. Schemat się powtarzał.
Continue reading

ObjectHasher, czyli jak wyliczyć hash z obiektu

System nad którym obecnie pracuję wykonuje wiele zapytań do zewnętrznych systemów. Każde zapytanie generuje nie tylko opóźnienie w działaniu aplikacji, ale również dodatkowe koszty. Postanowiliśmy zaimplementować rodzaj cache’u po naszej stronie. Do tego celu potrzebowaliśmy obliczać hash z modelu który przychodził do systemu. Niniejsza notka pokazuje przykładową implementację komponentu do wyliczania hash’a z obiektu.
Continue reading

Parallel debugging, czyli jak radzić sobie z wieloma wątkami

Ostatnio w projekcie zdarzyło się, że musiałem debugować skomplikowany proces wyliczania, który był zrównoleglony przy pomocy metody Parallel.ForEach(). Moja konfiguracja sprzętowa pozwoliła na uruchomienie kilku wątków naraz co sprawiło, że proces debugowania stał się dość uciążliwy. W różnych, bliżej nieokreślonych momentach, byłem przerzucany pomiędzy różnymi wątkami, a co za tym idzie pomiędzy różnymi kontekstami i miejscami w kodzie.
Continue reading

Kompendium wiedzy o ASP.NET Web API

Jakiś czas temu miałem przyjemność prowadzić zajęcia z ASP.NET Web API w ramach spotkań akademickiej grupy EKA.NET. Na potrzeby tychże spotkań założyłem repozytorium, w którym umieściłem implementację podstawowych funkcjonalności Web API. Po zakończeniu cyklu 3 spotkań postanowiłem dalej rozwijać to repozytorium. Obecnie znajduje się tam cała moja wiedza na temat ASP.NET Web API.
Continue reading