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...
Strona głównaUżytkownik
danielplawgo | użytkownik
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...
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...
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 ...
Jedną z nowości, jaka pojawiła się w Entity Framework Core 5 jest obsługa relacji wiele do wielu bez konieczności dodawania klasy dla tabeli łączącej. Trochę to zajęło, szczególnie, że było to dostępne w zwykłym Entity Framework. Jednak, co istotne, systematycznie są dodawane kolejne rzeczy do Entity Framework Core. Bardzo fajne jest to, że z relacji możemy korzystać na dwa sposoby, o czym w tym wpisie 🙂Relacja wiele do wielu Relacje wiele do wielu realizuje ...
Bazy danych i XML 28 dni, 18 godzin, 52 minuty temu 106 źrodło rozwiń
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....
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...
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ż...
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...
Posted on przez Daniel PlawgoWprowadzenie Ostatnio pokazałem, w jaki sposób za pomocą prerenderowania aplikacji po stronie serwera przyspieszyć ładowanie aplikacji, dzięki czemu użytkownik szybciej widzi interfejs użytkownik w przeglądarce. W tym wpisie pokażę Ci inną technikę, która dodatkowo zwiększa szybkość startu aplikacji. Domyślnie Blazor pobiera do przeglądarki całą aplikację, wszystkie powiązane assembly, co w przypadku rozbudowanej aplikacji może okazać się niepotrzebnym narzutem. Szczególni...
Jednym z problemów aplikacji stworzonej w Blazorze (WebAssembly) jest start aplikacji i potrzebny czas do jej pobrania i załadowania. Co powoduje, że już w najprostszej aplikacji użytkownik widzi ekran ładowania. W najnowszej wersji Blazora, która została opublikowana wraz z .NET 5 pojawiła możliwość prerenderowania aplikacji już po stronie serwera (to coś innego niż działanie Serwer Side). Dzięki czemu do przeglądarki leci już wygenerowany HTML, a co za tym id...
Pierwszy wpis na temat Blazora na blogu pojawił się mniej więcej półtora roku temu. Po serii wpisów zostawiłem temat, ale bacznie się przyglądałem, jak Blazor się rozwija. A rozwija się bardzo fajnie. Myślę, że teraz przy okazji wydania .NET 5 warto wrócić do tematu i podsumować zmiany, które pojawiły się w ostatnim czasie.Blazor .NET 5 Stan Blazora w czasie pisania tamtych wpisów był taki, że wersja Serwer Side (kod wykonuje się po stronie serwera z komunikac...
W ubiegłym tygodniu przygotowałem ogólne podsumowanie zmian w .NET 5. Natomiast w tym wpisie przyszedł czas na bardziej szczegółowe zmiany w najnowszej wersji języka C# 9.0. Jest ich kilka, a największą jest wprowadzenie rekordów. Dla każdej zmiany przygotowałem interaktywny przykład, który możesz uruchomić bezpośrednio z poziomu bloga. Dzięki czemu szybko sprawdzisz, jak zachowa się kod aplikacji. Gorąco zachęcam do zmian w kodzie i własnych eksperymentów!Top...
W ubiegłym tygodniu (10-12 listopada) odbyła się wirtualna konferencja .NET Conf, podczas której swoją oficjalną premierę miał nowy .NET 5. Odbyło się bardzo dużo różnych prezentacji, w których myślę, że każdy znajdzie coś ciekawego dla siebie. Natomiast w tym wpisie chciałem zebrać ciekawsze rzeczy związane z premierą .NET 5, C# 9.0, ale również z samą konferencją..NET 5 Głównym elementem konferencji oczywiście była premiera nowego .NET. Nowa wersja jest o ty...
W tym wpisie zajmę się tematem, który mam wrażenie bardzo często jest pomijany. To może niestety prowadzić do poważnych konsekwencji (utraty danych lub ich niepoprawności), które ciężko będzie namierzyć. Zobaczysz, w jaki sposób można rozwiązać ten problem dzięki optymistycznej współbieżności w .NET Core.Problem? Wcześniej czy później natrafimy na problem, w którym dwóch użytkowników/dwa procesy, czy jakieś inne elementy, będą próbowały zmienić w tym samym cza...
Bazy danych i XML 111 dni, 22 godziny, 43 minuty temu 145 źrodło rozwiń
Dzisiaj przyszedł czas na ostatni wpis o Azure Logic App. Poprzednio zajęliśmy się kosztami usługi, a dzisiaj przyszedł czas na automatyzację procesu wdrażania nowych wersji aplikacji. Skupimy się na przechowywaniu kodu w gicie oraz wdrażaniu z wykorzystaniem Azure DevOpsów. Dzięki czemu będziemy mogli zautomatyzować proces przenoszenia zmian z środowiska developerskiego na testowe, czy produkcyjne.Parametryzowanie aplikacji Na potrzeby tego wpisu wykorzystam ...
Postman jest narzędziem, które wykorzystuję codziennie i bez którego nie wyobrażam sobie pracy. Dzisiaj chciałbym Ci pokazać, w jaki sposób można zaimportować żądanie z DevTools (Chrome) do Postmana, aby ułatwić sobie pracę i testowanie aplikacji. W szczególności, gdy jakieś żądanie powoduje błąd (np. 500). Dodatkowo, gdy nauczymy naszych testerów, aby do zadań wrzucali tak wyeksportowane żądania, to praca w szczególności nad problemami staje dużo łatwiejsza i...
W ostatnim czasie na blogu pojawiły się dwa artykuły o Azure Logic App. Pokazałem w nich, jak utworzyć aplikację w tej usłudze, jakie są mniej więcej możliwości oraz problemy, na jakie można natrafić. W tym artykule zobaczysz, jaki jest faktyczny koszt działania takiej aplikacji. Przy okazji porównamy sobie to do kosztu innych usług Azure.Cennik Azure Logic App Na stronie Microsoftu poświęconej kosztom Azure Logic App znajdziemy taką oto tabelkę: Jak widać pł...
W dzisiejszym wpisie będę chciał Ci pokazać dość ciekawą bibliotekę – Ben.Demystifier. Może uznasz ją za ciekawostkę, ale jej dodanie i wykorzystywanie nie jest problematyczne czy czasochłonne. A może później ułatwić szukanie błędów i analizowanie logów. Tytułowy Ben.Demystifier to biblioteka, która zmienia zawartość wygenerowanego stack trace w momencie wystąpienie wyjątku. Na przestrzeni 20 lat istnienia C# Microsoft dodawał nowe funkcjonalności do języka, z...
Na początku września opublikowałem pierwszy wpis o Azure Logic App. Był on wprowadzeniem do tej usługi – pokazałem jej działanie na prostym przykładzie, który pobierał informacje o pogodzie i zapisywał ją w Azure Storage. W tym wpisie chciałbym pokazać Ci bardziej rozbudowany przykład. Przy okazji którego przedstawię kolejne kwestie związane z budową aplikacji w Azure Logic App.Przykład Tym razem przykład będzie dużo bardziej rozbudowany i będzie zawierał więk...