piątek, 30 sierpnia 2024
npm error LRUCache is not a constructor
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
piątek, 9 sierpnia 2024
FluentAssertions
Polly - paczka NuGet do obsługi RetryPolicy
Czasami pisząc różne zapytania http, np. zapytania REST potrzebujemy wprowadzić politykę ponowienia zapytania. Serwer mógł dostać czkawkę, mógł się pojawić jakiś problem sieciowy lub deadlock na bazie danych po stronie aplikacji serwerowej. Dlatego dobrze jest mieć jakiś sprawdzony sposób na wykonanie powtórnych zapytań. Jest to szczególnie ważne w kodzie współbierznym..
W tym momencie, zgodnie z teorią "not invented here" (nie wynaleziono tutaj) wchodzi paczka nuget o nazwie Polly która jest odpowiedzialna za ogarnięcie polityki ponownego wysyłania zapytania. Można napisać ile razy chcemy wysłać zapytanie (ile porażek akceptujemy), z jaką częstotliwością robić ponowienie, które wyjątki oraz w jaki sposób chcemy je przechwycić.
https://www.nuget.org/packages/polly/
czwartek, 24 lutego 2022
Figma (online blackboard)
For several years I have been working remotely in a fully distributed team. Working in a distributed team means that sometimes we need tools that we would not normally need. An example of such a situation is the simultaneous work of several people at the blackboard.
Everyone who has worked in a programming team knows how useful a blackboard can be, where two or more developers can come and start writing and explaining various problems at the same time.
One of the tools that is trying to replace the table for distributed teams is the Figma application. We used it yesterday in our Scrum retrospective and it generally worked. The team decided that the tool is ok and it lived up to its opinion, so I leave a note on the blog here if I ever look for a name for this solution in the future.
Links:
piątek, 18 lutego 2022
OWASP ZAP
Yesterday I was at a local .net group meeting. One of the presentations was about automatic tools for improving code quality. The first of the presented tools was the SonarQube that is a tool for static code analize that I know and use. The second presented tool for dynamic UI testing in terms of security was OWASP ZAP. It is a "proxy" tool, i.e. it is used to place it between the browser and the visited page, which can view or modify information sent from / to the browser. If anyone has used Fiddler, know what a "browser proxy" is (same type of tool but improved).
OWASP ZAP in the default mode is used to make the user use the page in "normal" mode, and the tool underneath checks for any security vulnerabilities. If someone uses Selenium for automatic tests, then by connecting OWASP ZAP gets additional safety tests.
It is also possible to run OWASP ZAP from the script level, which makes it possible to insert it into the CI / CD tool or to generate a weekly report. It is recommended to test on a different instance than production / test because full tests can take a long time and generate server load.
Tool is Open Source and supported by Community.
Summary:
We have 3 main modes:
- the user clicks on the page himself (useful when we have an automatic tester using Selenium)
- basic scanning mode (useful to plug into a CI / CD tool and test automatically, e.g. with a larger deploy)
- full scan mode (takes a long time, so it should be done on a separate server in a night task mode).

