piątek, 20 września 2024

Humanizer

 Jak już wspomniałem w moim poprzednim poście oglądam sobie kurs "SOLID WebApi" od DevMentors i co jakiś czas wyłuskuję sobie z niego coś nowego. Tym razem wyłuskałem od nich paczkę NuGetową Humanizer  czyli gotowe rozszerzenie to zamiany stringów z jednej wersji na inną, np. z CamelCase na SnakeCase, albo ze SnakeCase na wyrazy rozdzielone spacją. Więcej przykładów jest na stronie projektu. To co warto wspomnieć, to kod źródłowy dostępny jest na githubie (open source), a sama paczka jest na licencji MIT, czyli można ją bez problemu używać również w komercyjnym oprogramowaniu.


Linki:

https://github.com/Humanizr/Humanizer - link do kodu źródłowego na GitHub z plikiem README oraz przykładami użycia.

https://www.nuget.org/packages/Humanizer/ - link do paczki na serwisie nuget

niedziela, 15 września 2024

Shouldly NugetPackage

Oglądając kurs od DevMentors zauważyłem że używają oni pakietu Nugetowego Shoudly. Shouldy jest to kolejny pakiet który pozwala wykonywać testy jednostkowe w sposób bardziej płynny, czyli innymi słowy robi dokładnie to samo, co opisana przezemnie wcześniej paczka FluentAssertions.

Co warto wspomnieć, zarówno Shouldy jak i FluentAsserions mają w miarę przyjazne (z komercyjnego punktu widzenia) licencje. Shouldy ma licencję BSD-2, natomiast FluentAsserions posiada licencję Apache.


Linki:

https://docs.shouldly.org/ - strona projektu

https://www.nuget.org/packages/Shouldly - link do Shoudly na Nuget.

piątek, 13 września 2024

Wtyczka REST Client do Visual Studio Code

Kupiłem sobie kurs "Solidne Web API" od DevMentors, zacząłem sobie tego słuchać zauważyłem fajne narzędzie które pokazali. Chodzi o wtyczkę "Rest Client" dla edytora Visual Studio Code. Mianowicie możemy w bardzo prosty i łatwy sposób utworzyć sobie nowy plik tekstowy z rozszerzeniem .http i przy pomocy tej wtyczki testować nasze REST API niczym przy pomocy Postmana. Zaleta tego rozwiązania jest taka, że wszystko mamy zapisane w kodzie pod kontrolą systemu kontroli wersji (np. GIT).

Bardzo fajne i zgrabne podejście. Już mi się podoba.


Linki:

https://marketplace.visualstudio.com/items?itemName=humao.rest-client -> wtyczka

https://codewithandrea.com/tips/rest-client-vscode/ - tutaj przykładowe użycie

https://code.visualstudio.com/ -> visual studio code

piątek, 6 września 2024

MediatR czyli wstęp do CQRS

Przeglądając polecane biblioteki do .NET Framework natrafiłem na bibliotekę MediatR. Czasami się przewija w różnych miejscach, ale jej nie kojarzyłem. Przynajmniej nie w pełni świadomie. Postanowiłem więc jej się nieco  przyjrzeć. W tym celu zrobiłem sobie mały wstęp bazujący na blogu Cezarego Walenciuka oraz umieszczonemu przez niego kodowi źródłowemu. Okazało się, że jednak kiedyś z tego korzystałem w jednym z projektów CQRS utworzonych przez jednego z kolegów z pracy, tyle że robiłem to wtedy w sposób nie do końca w pełni świadomy. Aktaulnie, po przeczytaniu blogposta i wykonaniu przykładowego projektu jestem już nieco bardziej świadomy, a przynajmniej wiem z czym to się je :)


Linki:

Cezary Walenciuk - blogpost nr.1

Cezary Walenciuk - blogpost nr.2

Cezary Walenciuk - kod źródłowy

Piotr Rabiniak - kod źródłowy

piątek, 30 sierpnia 2024

npm error LRUCache is not a constructor

When I updated my npm and node versions on my PC for over few years and try to insall/unistall anything on my PC I get error: "npm error LRUCache is not a constructor"

Then I have found this blogpost how to solve the probmem:
https://forums.gentoo.org/viewtopic-t-1170095-start-0.html

In my situation it was go to: C:\Program Files\nodejs\node_modules\npm\node_modules\cacache\lib\memoization.js and remove brackets:

const { LRUCache } = require('lru-cache')

change to:

const LRUCache = require('lru-cache')



Image show messages from console before and after the change:


poniedziałek, 19 sierpnia 2024

Fine Code Coverage

 Bawiąc się moim testowym projektem WinFormsCrud w pewnym momencie postanowiłem sprawdzić sobie jakie mam pokrycie kodu testami jednostkowymi. O ile wiedziałem, że dla samego projektu WinForms będzie zero (bo do tego projektu jeszcze nie dołożyłem testów) o tyle dla pozostałych projektów byłem zainteresowany ile % wyjdzie. 

Samo visual studio 2022 nie ma tego feature w standardzie, o tyle z pomocą przyszedł mi stackoverflow.com który poinformował mi, że dla Visual Studio 2022 Community istnieje darmowy tool pozwalający to sprawdzić, czyli FineCodeCoverage2022 

Sprawdzilem sobie ten tool i on faktycznie działa.

Wiadomo, zawsze mogło być lepiej, natomiast w tym momencie najważniejsze że tool jest darmowy i działa.



poniedziałek, 12 sierpnia 2024

Flurl oraz Flurl.Http

 Do napisania tego postu zainspirowały mnie dwie rzeczy. Pierwszą był post Cezarego Walenciuka na jego blogu odnośnie problemów z klasą HttpClent  https://cezarywalenciuk.pl/blog/programing/ihttpclientfactory-na-problem-z-httpclient 

Cezary omawia tam problem braku zwalniania socketów przez klasę HttpClient. Jako pierwsze rozwiązanie pada "użyj Flur", który opakowuje HttpClienta i dzięki temu działa to dużo bezpieczniej. Później Cezary omawia problem czystego HttpClienta i na koniec podaje rozwiązanie docelowe dla aplikacji .NET CORE MVC  czyli HttpClientFactrory wpiętego w pipeliy (sorry, middleware) ASP MVC CORE. Wszystko pięknie, tyle że ja aktualnie pisałem sobie apkę na zadanie rekrutacyjne i tam było w wymaganiach podane aby to była aplikacja Windows Forms. Chwilę popatrzyłem, nie bardzo wiedziałem jak się wpiąć w pipeliny (middleware) WinFormsów więc użyłem Flur.Http i jestem szczęśliwy. 

Dziękuje Cezary.


Edycja: 

Problem HttpClient oraz propozycje na jego rozwiązanie jest znacznie szerzej opisany w czasopiśmie Programista nr. 5/2023 (110). Autorem art. jest Igor Trafalski.

Igor przedstawia rozwiązania w postaci HttpClientFactory oraz TypedHttpClient czyli wykorzystanie wbudowanej w net core HttpClientFactory, która to poprzez specjalny handler reużywa połączeń HttpClienta. 


Linki:

https://www.nuget.org/packages/Flurl.Http

https://programistamag.pl/programista-5-2023-110/ - link do wspomnianego numeru czasopisma "Programista"

https://programistamag.pl/jak-bezpiecznie-korzystac-z-httpclient-w-net/ -> więcej o tym konkretnym art. Igora.

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-9.0 -> link do dokumetacji