Ostatni wpis zamknął serię związaną z implementacją mikroserwisów jako takich. Jest jednak jeszcze wiele tematów związanych z ich utrzymywaniem i wdrażaniem, które chciałbym sukcesywnie poruszać na blogu. Dziś zaczniemy od moim zdanim kluczowego mechanizmu, bez którego praca z systemem rozproszonym na produkcji może okazać się piekłem. Cym jest rozproszone śledzenie? Wyobraź sobie, że zakończył się etap implementacj...
Strona głównaUżytkownik
dpawlukiewicz | użytkownik
Programowanie rozproszone 1882 dni, 13 godzin, 36 minut temu 160 źrodło rozwiń
Cześć! Zapraszam na nową serię wpisów dotyczącej stworzenia pipeline CI/CD z użyciem Kubernetesa, chmury AWS, Azure i .NET Core. Pierwszy wpis poruszy temat stawiania klastra w chmurze AWS.
Architektura 1889 dni, 15 godzin, 38 minut temu 132 źrodło rozwiń
W poprzednim wpisie poruszyłem tematykę transakcji biznesowych w systemach rozproszonych, przedstawiając różne sposoby na ich projektowania i kontrolowanie. Dziś, zgodnie z zapowiedzią przedstawię kod C#, który będzie niczym innym jak implementacją hybrydową wzorca saga/oraz process manager. Bez zbędnego przedłużania, zaczynajmy! Chronicle – potrzeba matką wynalazków… Jeżeli czytałeś/aś...
Programowanie rozproszone 1894 dni, 14 godzin, 35 minut temu 352 źrodło rozwiń
Kompleksowy kurs online wprowadzający w świat nowoczesnej architektury mikroserwisów z wykorzystaniem metodyki Event Storming oraz najpopularniejszych technologii takich jak: .NET Core, Docker, Kubernetes, Istio Service Mesh i wiele innych!
Nowości ze świata .NET edycja 18. W tym tygodniu stojąca pod znakiem ciekawostek drobnych, ale użytecznych na co dzień. No to co, zaczynamy? TAK!
W ubiegłym roku pisałem o bezpiecznym null-checku w C# przy użyciu słowa kluczowego is, który według mnie powinien być stosowany wszędzie gdzie jest to możliwe. Dziś dla odmiany konstrukcja, która jest bardziej ciekawostką językową niż czymś (co ja osobiście) chciałbym znaleźć w kodzie. Problemem jest przede wszystkim ograniczona funkcjonalność, ale także czytelność i interpretacja konstrukcji szczegol...
Sztuka programowania 2022 dni, 15 godzin, 15 minut temu 260 źrodło rozwiń
Dziś krótki wpis o bardzo przydatnym i dosyć mało znanym ficzerze ASP.NET Core tj. możliwości używania „gołego” routera bez całej otoczki MVC. Zanim przejdę do samego kodu warto jedynie dopowiedzieć co złego jest w klasycznych podejściu z kontrolerami, które wszyscy znamy i lubimy? Otóż…nic! Warto jednak pamiętać, że linijki, które domyślnie znajdują się w Startup.cs tj: services.AddMvc(); //... app.UseMvc(); to coś w...
9 wydanie wiadomości. Jestem przekonany, że wiesz jaki jest numer jeden. W końcu wszyscy o tym rozmawiali. Ale mam nadzieję, że dalsze wiadomości Cię zaskoczą.Visual Studio 2019 już jest Jest nowe Visual Studio. Jak go jeszcze nie masz, to pewnie niedługo będziesz je miał. Czy warto? Na pewno. Czy już? Hmmm, trudne pytanie, całe szczęście można mieć inne IDE obok - starego VS, Rider czy VS Code Ale nim przejdziesz do pracy warto przeczytać 3 poniższe artykuły:Visual Studio 2019 .NET productivityVisual ...
Dziś odpowiedź na zdecydowanie najczęściej zadawane pytanie w kontekście naszego projektu DShop. Brzmi ono „w jaki sposób użytkownik końcowy aplikacji wie czy jego komenda została (i kiedy została) przetworzona?”. Na pierwszy rzut oka odpowiedź na to pytanie może wydawać się trywialna, prawda? Wszak większość typowych aplikacji webowych po wykonaniu jakiejś akcji informuje nas o jej powodzeniu lub błędzie poprzez np. toastry...
Programowanie rozproszone 2090 dni, 14 godzin, 52 minuty temu 329 źrodło rozwiń
Kontynuujemy naszą podróż z mikroserwisami! Dziś przejdziemy do nieco bardziej „zaawansowanych” zagadnień, które mam nadzieje okażą się dla Ciebie zrozumiałe, a ich użycie – zasadne. Zacznijmy od problemu, aby móc w ogóle przejść do tematu dzisiejszego wpisu. Jak zapewne pamiętasz we wpisie o odczycie danych przedstawiłem bibliotekę RestEase, dzięki której w łatwy sposób mogliśmy wykonywać żądania HTTP z API Gateway do konkr...
Programowanie rozproszone 2127 dni, 12 godzin, 50 minut temu 225 źrodło rozwiń
Dziś krótki i nieplanowany wpis z cyklu „ku przestrodze”, a będzie o… polu statycznym, które skutecznie zmieniło moje plany dotyczące ubiegłego wieczoru (ok 2h debugowania). Nie ma jednak tego złego, prawda? Ja mam nauczkę, a Ty drogi czytelniku być może też wyniesiesz z tego coś dobrego. Zacznijmy od tego, aby odpowiedzieć sobie po co i kiedy stosować słowo kluczowe static? Myślę, że każdy, czy to w szkole, na uczelni, na kursie czy w p...
Sztuka programowania 2134 dni, 14 godzin, 40 minut temu 257 źrodło rozwiń
Ósmy odcinek kursu „Distributed .NET Core” jest już na YouTube więc do dobry moment, aby kontynuować kolejne zagadnienia związane z naszą implementacją mikroserwisów. W poprzednich wpisach omówiłem kolejno zapis i odczyt danych z systemu bazującego na wzorcu CQRS tym samym „zamykając” temat komunikacji użytkownik-system. Istnieje jednak jeszcze jedna, istotna forma komunikacji, niewidoczna dla zewnętrznych podmiotów. Mowa o wewnętrznej wymianie informacji między konkretnymi usługami. Po co usługi komun...
Architektura 2152 dni, 4 godziny, 57 minut temu 260 źrodło rozwiń
Podczas nagrywania czwartego odcinka „Distributed .NET Core” (do którego oglądania serdecznie Cię zapraszam) wspólnie z Piotrkiem poruszyliśmy przez moment kwestię zasadności użycia async/await w tzw. „one line-rach” czyli metodach, których ciało posiada jedynie jedną linie i najczęściej jest implementowane za pomocą operatora „goes to” (nie mylić z lambdami). Przykład takiej metody: public async Task
Sztuka programowania 2176 dni, 13 godzin, 20 minut temu 311 źrodło rozwiń
Jakiś czas temu podczas rozwijania swojego projektu Open Source stanąłem przed, wydawać by się mogło prostym problemem. Otóż chciałem udostepnić użytkownikom biblioteki metodę rozszerzającą, która automatycznie zarejestrowałaby w kontenarze dependency injection wszystkie klasy implementujace konkretny interfejs. W przypadku zewnętrzynych bibliotek jak np. Autofac taki zabieg jest możliwy dzieki Assebly Scaning, który wyglada następująco: builder.RegisterAssemblyTypes(myAssembly) .Where(t => t....
Sztuka programowania 2190 dni, 8 godzin, 35 minut temu 157 źrodło rozwiń
Często bywa tak, że do podjęcia jakiegoś nowego działania potrzebny jest nam impuls… czynnik, który przeważy szalę naszej mentalnej niepewności i sprawi, że finalnie powiemy „zrobię to”. W 2016 roku takim impulsem był dla mnie konkurs „Daj się poznać”, który ostatecznie zmotywował mnie to założenia tego bloga i dzielenia się swoją wiedzą z innymi ludźmi. Początki nie były takie jak sobie wyobrażałem. Towarzyszył mi ciągły strach i obawa przed napisaniem czegoś nazbyt trywialnego, mało ciekawego czy najzw...
Rzadko zdarza mi się pisać o ficzerach języka C#, a już na pewno nie o takich, które są dostępne od wielu lat. Niemniej, dziś miałem okazję ponownie wykorzystać ciekawą i mniej znaną „odsłonę” enum-ów dostępną poprzez atrybut FlagsAttribute, która być może okaże się dla Ciebie przydatna. Klasyczne użycie typów wyliczeniowych Gdybym z własnych obserwacji miał powiedzieć kiedy typy wyliczeniowe są stosowane, odparłbym „kiedy bool nie wystarcza”. Zazwyczaj bowiem, zaczyna się od właśnie od zmiennej typu ...
Sztuka programowania 2222 dni, 13 godzin, 18 minut temu 305 źrodło rozwiń
Tworząc projekt open source w pewnym momencie przychodzi czas, w którym należałoby nasze dzieło udokumentować celem jego zrozumienia przez innych programsitów. Dostawcy usług jak GitHub czy Bitbucket oferują wbudowane mechnizmy jak popularne Wiki, jednak według mnie posiadają one kilka zasadniczych minusów:Wiki jest nierozłączną częscią repozytorium projektu (choć można zrobić niezależny clone).Wiki nie jest (jawnie) wersjonowane. Wgląd w kolejne rewizje jest możliwy, ale nie mamy mozliwości np. utworzen...
Na początku miesiąca miałem przyjemność udać się do Danii, aby wziąć udział w firmowym hackatonie. Wraz z dwoma osobami pracowałem tam nad prostym projektem, który miał niejako rozszerzyć możliwości GitHuba. Bez wchodzenia w zbędne szczegóły dotyczące samego projektu, całe flow prezentowało się następująco...
Dodajemy pre-request script który automatycznie pobiera OAuth access token.
Czy szybki kod musi być brzydki? O jakie przypadki należy zadbać myśląc o performance'ie naszej aplikacji? Jak nie zamykać furtek dla wydajności? Zapraszam do najnowszego posta.
Sztuka programowania 2277 dni, 14 godzin, 7 minut temu 98 źrodło rozwiń