Możemy spotkać różne sposoby organizacji projektów w repozytoriach. Niektórzy preferują podejście monorepo, w którym wiele różnych projektów/aplikacji znajduje się w tym samym wspólnym repozytorium. Innym podejściem jest multirepo, gdzie dla każdego projektu/aplikacji tworzymy dedykowane repozytorium. Jednym z problemów pierwszego podejścia jest optymalizacja budowania aplikacji w procesie CI/CD, bo nie chcemy budować wszystkich projektów w repozytorium, w mom...
Posted on przez Daniel PlawgoWprowadzenie W jednym z wcześniejszych wpisów pokazałem, w jaki sposób wysłać wiadomość email z wykorzystaniem SendGrida. Wspomniałem również, że umożliwia on otrzymywanie zdarzeń o zmianie statusu wysłanej wiadomości. Możemy otrzymać takie informacje jak dostarczenie wiadomości, otworzenie przez użytkownika, kliknięcie w link. W tym wpisie pokażę Ci, jak otrzymywać te zdarzenia w C#.SendGrid Webhook W panelu konfiguracyjnym SendGrida możemy skonfigurować webhooka, za pomo...
Refaktoryzacj przy pomocy wyrażeń regularnych w Visual Studio Wyrażenia regularne to uniwersalne narzędzie w skrzynce narzędziowej każdego programisty. Jednym z miejsc, w których mogą one być przydatne, są okna dialogowe Quick Find i Quick Replace w Visual Studio. W tym poście pokażę, jak wykorzystać możliwości wyrażeń regularnych w inteligentnej refaktoryzacji.
Zdarza się, że potrzebujemy dostać się do jakiejś usługi działającej na komputerze lokalnym z sieci zewnętrznej – na przykład podczas testowania integracji z webhookami wysyłanymi między innymi przez takiego SendGrida. O ile mamy publiczne IP i możemy skonfigurować przekierowanie portów, to nie jest to jakoś mocno problematyczne. Gorzej jak pracujemy w biurze i doproszenie się o to administratorów graniczy z cudem. W takiej sytuacji z pomocą przychodzi tytułowy...
Dziś biorę na tapet dwa najpopularniejsze IDE dla .NET developerów – Visual Studio i JetBrains Rider. Czym się różnią? I dlaczego używam już (prawie) tylko Ridera? 😉 Zapraszam!
Tworząc systemy, staram się jak najwięcej korzystać z gotowych rozwiązań. Szczególnie w przypadku elementów, które są poboczne w rozwiązaniu, które tworzę, a jednak są wymagane do poprawnego działania aplikacji. Przykładem takiego elementu systemu jest wysyłka wiadomości email. Prawie każda aplikacja wysyła wiadomości email, a twórcy takich systemów jak SendGrid za drobną opłatą zrobią to dużo lepiej niż my.SendGrid SendGrid jest popularną usługą, która służy ...
Testy mutacyjne. Szybki start i biblioteka Stryker w .NET i dotnetcore. Pierwsze uruchomienie, szybkie spojrzenie na rezultaty testów.
Tworząc aplikację, na ogół zależy nam na tym, aby działała jak najszybciej. Spędzamy często wiele godzin na tym, aby zoptymalizować jej działanie. Ale sporadycznie pojawiają się sytuacje, kiedy musimy sztucznie ograniczyć ilość operacji. Na przykład API, z którego korzystamy, umożliwia wykonanie tylko ograniczonej ilości żądań w jednostce czasu. Biblioteka RateLimiter, o której mowa w tym wpisie, właśnie umożliwia zrealizowanie czegoś takiego w aplikacji .NET....
Jakiś czas temu poruszyliśmy w pracy ciekawą dyskusję. Rozmawialiśmy o wydajności. Niestety umowy i zobowiązania nie pozwalają mi ze szczegółami opowiedzieć czego dokładnie dotyczyła. Chcąc mniej więcej przybliżyć temat przyjmijmy że chcieliśmy porównać trzy scenariusze:Jeden request, który robi 1000 akcji1000 request-ów, które robią 1 akcję10 batch-y request-ów, które robią 100 akcji O ile nie jestem wielkim fanem testów wydajnościowych (w wielu aplikacjach to tylko przerost formy nad treścią) to tym ...
How to completely automate continuous integration and release management of visual studio extensions.
W poprzednim wpisie pokazałem, w jaki sposób tworzyć automatyczne testy API w karate. Uruchamiałem je lokalnie z poziomu Visual Studio oraz wiersza poleceń. Ale największą ich zaletą jest automatyczne uruchamianie podczas procesu CI/CD. Zobacz, w jaki sposób to zrobić na przykładzie Azure DevOps.Karate i Azure DevOps Automatyczne wykonywanie testów karate w Azure DevOps nie jest skomplikowane. Jest nawet prostsze niż w przypadku wykonywania testów Postmana. Ni...
Czasem chcemy wiedzieć jakie mamy pokrycie testami naszego kodu. Chcemy znać wskaźnik Code Coverage. O ile jestem przeciwny ślepemu zapatrywaniu się w liczby, bo przecież pokrycie 100% kodu testami nic nie mówi, o tyle podoba mi się idea pokazywania które fragmenty kodu tymi testami są pokryte. ...
Logowanie to jeden z trzech głównych filarów obserwowalności naszych aplikacji – często niedoceniany, wykonany po macoszemu, byle był. Jako konsultant widziałem wiele aplikacji / systemów, które borykały się z problemem logowania niepoprawnej ilości danych, logowania danych poufnych bez wyraźnej przyczyny. Nie myśląc o tym w fazie planowania tworzymy problem nie tylko uciążliwy, lecz również trudny do naprawienia. Co więcej, w przypadku logowania wielu informacji trudno jest wyszukać te, które są nam fak...
Publikowałem na blogu już kilka wpisów na temat testowania API z wykorzystaniem świetnego narzędzia jakim jest Postman. W tym w jaki sposób automatycznie testować API podczas każdego release w Azure DevOps. W tym wpisie natomiast chciałbym przedstawić alternatywę dla takich testów, w postaci narzędzia Karate.Karate Karate jest narzędziem, za pomocą którego możemy wykonać różnego rodzaju testy. Od testów API, które pokażę Ci w tym wpisie, po testy interfejsu uż...
W jednym z ostatnich artykułów poruszyłem temat mechanizmu flag funkcjonalnści i ich integracji z serwerem Gitlab-a (Gitlab – Feature Toggles) . Tym razem planuje rozwinąć temat implementacji Permissioning toggles za pomocą klienta serwer-a Unleash. Jeżeli nie czytałeś wcześniejszego artykułu to zachęcam Cię do zapoznania się z nim.Czym są Permissioning Toggles? Zacznijmy od krótkiego przypomnienia czym są Permissioning Toogles. W dużym skrócie są to flagi, w których dostęp do funkcjonalności ma tylko z...
Podczas aktualizacji Visual Studio, jego instalator instaluje również nowe wersje .NET Core SDK - każda zajmuje ok. 500 MB. Po pewnym czasie może się nazbierać trochę niepotrzebnych paczek. W moim przypadku było to ponad 10, czyli na szybko licząc ok. 5 GB zbędnych rzeczy. Ten wpis opisuje narzędzie służące do usuwania starych paczek .NET Core.
Posted on przez Daniel PlawgoWprowadzenie Postman jest rozbudowanym narzędziem, bez którego nie wyobrażam sobie pracy. Większość kojarzy go jako aplikację do testowania api, ale umożliwia on dużo więcej. W tym wpisie będę chciał pokazać Ci, czym jest Mock Serwer oraz jak z niego skorzystać. Zauważyłem, że dużo osób korzystających na co dzień z Postmana nie wie, że coś takiego jest dostępne. A szkoda, bo są sytuacje, w których Mock Serwer może się przydać.Po co mi Mock Serwer? Postmana w większości prz...
During the analysis of a certain process, you might end up with just one command that leads only to one event. It has happened to me during our first Process Level sessions. We did find commands to the events that we’ve spotted in the Big Picture session and it felt just right. Is It Really That Simple? There’s a catch though. You might end up with a model of the system that looks just like a CRUD. Is the whole system just a CRUD? Hmm… In most cases probably not. In my case, it was the s...
Serverless to jednen z większych buzzword-ów ostatnich lat. Sprawdzając w google trends to “serverless” był bliski przebicia popularnością fraze “microservices”. W dzisiejszym artykule chciałbym zagłębić się w ten temat. Zaczniemy od podstaw – wygenerujemy pierwszą funkcję Azure, a następnie wdrożymy ją za pomocą Gitlab CI.Logowanie do Azure CLI Żeby się uczyć trzeba mieć na czym pracować. Proponuje zacząć od stworzenia pustej funkcji azure, aby mieć gdzie wdrożyć stworzoną, w tym tutorialu, funkcję. Oc...
Witaj w 66. odcinku podcastu. Tym razem poruszamy temat kontenerów, głównie dockera. Z naszymi gośćmi przechodzimy od początków konteneryzacji, przez teraźniejszość a skończywszy na wizji przyszłości. Miłego słuchania.