I explained in my recent article the facts and myths of CQRS. If you heard you need: - 2 databases - to use a messaging queue - to be facing Eventual Consistency - use it with Event Sourcing and it's hard to apply and complicates the architecture. Then you should definitely read this post!
Architektura 756 dni, 55 minut temu 110 źrodło rozwiń
W propozycjach zmian na dotnetomaniak.pl często pojawiała się sugestia założenia grupy facebookowej. Miejsca, które będzie trochę bardziej interaktywne niż strona i pozwoli na swobodne rozmowy dotnetomaniaków. Planujemy wprowadzić w najbliższym czasie kilka większych usprawnień serwisu, ale postanowiliśmy zacząć od utworzenia prywatnej grupy. Znajdziecie na niej zarówno rozmowy o kwestiach technicznych serwisu i wprowadzanych zmianach, jak również luźne pogawędki na tematy związane z szeroko pojętym .NE...
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...
We’ve all seen systems that were tightly coupled, and maybe you are working in that kind of system right now. It seems that keeping codebase without high coupling its hard. Because most of the systems ends as not maintainable mess, we just need some time to make it like that. And I want to be clear, I’m not trying blaming any of you because I’ve done the same. But after 60 years from when coupling was invented, I think it’s time to stop chasing the newest technologies and focus on what is causing those p...
Architektura 758 dni, 5 minut temu 71 źrodło rozwiń
Refaktoryzacja przy pomocy refleksji Czasami zdarza się, że muszę przeprowadzić refaktoryzację, w której Resharper nie może mi pomóc. W moim ostatnim poście opisałem, jak przydatne mogą być wyrażenia regularne przy takiej pracy: Refaktoryzacj przy pomocy wyrażeń regularnych w Visual Studio Tym razem sprawa jest inna i prosta podmiana nie zadziała w tym przypadku.
Sztuka programowania 759 dni, 10 minut temu 95 źrodło rozwiń
Thanks to my colleague, I learned this week why Partial
Sztuka programowania 762 dni, 21 minut temu 73 źrodło rozwiń
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...
O szukaniu performance'u. Pół żartem, pół serio. Ciało jest. Nawet dycha, ale sprawcy brak. Kto jest winny?
Sztuka programowania 763 dni, 23 godziny, 58 minut temu 69 źrodło rozwiń
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.
Oto 71 70 odcinek Ostrej Piły. A w nim nasz gość zapoznaje nas i was z językiem Go. Zastanawiamy się co sprawia, że jest na fali popularności, o tym jak się w nim programuje i jak się żyje bez wyjątków. Miłego słuchania.
Setting up the test matrix in XUnit is not so easy as it might seem. This summarises my struggles with adding System.Text.Json support to Marten and setting our test matrix to run the whole test suite for both serialisers.
Sztuka programowania 766 dni temu 45 źrodło rozwiń
Writing a sqlite clone from scratch in C Overview View on GitHub (pull requests welcome)What format is data saved in? (in memory and on disk)When does it move from memory to disk?Why can there only be one primary key per table?How does rolling back a transaction work?How are indexes formatted?When and how does a full table scan happen?What format is a prepared statement saved in? In short, how does a database work? I’m building a clone of sqlite from scratch in C in order to understand, and I’m going...
Answering the question "What's the difference between a command and an event?" is not so obvious as it may seem. Fact vs Intent is not explaining everything. I went through the different aspects of this distinction in my new blog post. I also explain the consequences of those considerations.
Architektura 770 dni, 11 minut temu 94 źrodło rozwiń
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...
A while ago I came across “Quick notes on a rant” authored by Don Syme. This rant criticizes the C# language for the lack of a few important features. The first point is "Implicitly discarding information is so 20th Century" which brings our attention to one of the sources of bugs in C# programs. Lucky me, I got the pleasure to make this kind of bug and find it later in production code, so this blog post is to save you the trouble...
Sztuka programowania 770 dni, 11 minut temu 66 źrodło rozwiń
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!
Zwracanie więcej niż jednego wyniku z metody – tuple Czy zmierzyłeś się kiedyś z programem, w którym trzeba było zwrócić więcej niż jeden wynik z metody? Jest kilka sposobów, aby sobie z tym poradzić, a tuple może być tym, czego potrzebujesz.
Sztuka programowania 772 dni, 23 godziny, 55 minut temu 121 źrodło rozwiń
W jednym z moich ostatnich artykułów (Application Insights – Ukryty Skarb Azure) przeszliśmy przez podstawową konfigurację usługi application insights oraz bardzo podstawową integrację. Jako, że obiecałem wam więcej treści z tematu, tak oto powstał ten artykuł. Zajmiemy się wprowadzeniem integracji z Application Insights na kolejny poziom. Jako, że to kontynuacja, bardzo zachęcam abyś przeczytał wcześniejszy artykuł.SeriLog Zacznijmy od rzeczy podstawowej. Jak przy większości moich projektów zaczynam o...
If you want to know : - why I think that distributed systems are like Rocky Balboa. - the difference between Saga, Process Manager and Choreography. Here's my take on that together with the real-world samples.
Programowanie rozproszone 777 dni, 8 minut temu 137 źrodło rozwiń
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 ...