Poprzedni wpis nt. biblioteki Dapper był tylko małą zachętą do sprawdzenia tej biblioteki, przetestowania jej i sposobu jej integracji w Twoim kodziku. Tutaj poruszę temat trochę szerzej, z punktu widzenia kategorii ORMów. Kodziku nie będzie 😉
Strona głównaUżytkownik
patrykkubiela | użytkownik
Testy mutacyjne. Szybki start i biblioteka Stryker w .NET i dotnetcore. Pierwsze uruchomienie, szybkie spojrzenie na rezultaty testów.
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. ...
Komunikacja, a wskaźnik Bus Factor. No właśnie, czy to się łączy?
Przemysław Walkowski W tym tygodniu było kilka interesujących problemów i ciekawych nauk na przyszłość. Trochę mięsa jak i trochę architektury. Zapraszam do szybkiej lektury. Zrymowało się przypadkowo. Sugestia architektoniczna (testy) Testy są dobre, ważne i każdy to wie, ale testów i tak nie piszę się tyle, ile trzeba, bo czasem ciężko je napisać itd. Ciekawą myśl usłyszałem. Jeśli w systemie jes...
Od jakiegoś czasu sporo programuję, wykorzystując Visual Studio Code. Podczas tworzenia kodu przydaje się również dokumentacja. Ostatnio odkryłam funkcję podglądu plików .md, a także wtyczkę, która umożliwia sprawdzanie składni takich plików.
Stało się, zakończyłem właśnie konkurs na blogu, związany z całą serią postów dotyczących zasad SOLID i w ramach tego postu, publikuję odpowiedzi/komentarze które były warunkiem udziału w konkursie. Publikuję również moje przemyślenia względem tych właśnie komentarzy. Myślę, że to będ...
Sztuka programowania 2039 dni, 2 godziny, 24 minuty temu 74 źrodło rozwiń
Robert C. Martin (Uncle Bob) w swoim artykule nt. Dependency Inversion Principle, skondensowanej wersji rozdziału „DIP: The Dependency-Inversion Principle” ze swojej książki pt. Agile Software Development, Principles, Patterns and Practices, opisuje „zły” design aplikacji i wprowadza pojęcie „kruchości” aplikacji. Mianowicie, kruchość aplikacji to m.in. tendencja aplikacji do psucia się w wielu miejscach, w momencie jednej małej zmiany w miejscu zupełnie nie powiązanym do miejsca gdzie zaszła zmiana. Te...
Sztuka programowania 2058 dni, 2 godziny, 35 minut temu 118 źrodło rozwiń
W dwóch ostatnich wpisach na blogu omawiałem zapis historii zmian danych w aplikacji z wykorzystaniem mechanizmu Audit z Entity Framework Plus. Mechanizm tamten działał w momencie, gdy korzystaliśmy z Entity Framework. Jednak nie zawsze chcemy lub możemy korzystać z tego ORMa. Dlatego w dzisiejszym wpisie chcę Ci pokazać mechanizm, który działa zupełnie inaczej i jest dostępny w samym silniku SQL Server. Mechanizm ten nazywa się Temporal Tables i jest dostępny ...
Bazy danych i XML 2093 dni, 2 godziny, 27 minut temu 168 źrodło rozwiń
Przypisanie istniejącego obiektu do innej zmiennej niesie ze sobą pewne ryzyko. Należy być świadomym, czym różni się i co zawiera w sobie typ referencyjny, a co typ wartościowy. O typach wartościowych pisałem już nieco podczas omawiania struktur, w tym materiale. Tam też przedstawiłem problem przypisywania typów referencyjnych do innej zmiennej, który zaraz przypomnę.Przypisywanie typów wartościowych Jak sama nazwa wskazuje typy te zawierają w sobie wartość, która zostaje im przypisana. Stwórzmy w naszy...
Sztuka programowania 2093 dni, 2 godziny, 27 minut temu 135 źrodło rozwiń
Dzisiaj, bez oficjalnej definicji. Jedynie wspomnę o tym, o czym – w kontekście Interface Segregation Principle – należy wspomnieć. Zasadniczo ISP mówi o „rozczłonkowaniu” dużych, wielozadaniowych kontraktów i interfejsów na mniejsze, posiadające jedną konkretną odpowiedzialność. Dzięki czemu, każdy element który konsumuje taki interfejs, ma dostęp tylko do określonej funkcjonalnośći. Intencją ISP jest utrzymanie systemu luźnych powiązań między obiektami, ułatwienie konserwacji systemu, testowania, czy ...
Sztuka programowania 2093 dni, 2 godziny, 27 minut temu 138 źrodło rozwiń
Ostatnio w pracy, został poruszony temat ogólnoświatowej recesji wieszczonej od jakiegoś czasu i jej wpływu na naszą, stricte IT, branżę. Sprawa zainteresowała mnie na tyle, że postanowiłem napisać coś w tym temacie. Jak wiadomo, ogólnoświatowa gospodarka, od czasu do czasu przeżywa „załamanie”. Okres od jednego spadku do drugiego nie zawsze jest taki sam, ale wiemy już (jako ludzkość) że dzieje się to, mniej więcej, w okresach 30-to letnich, a najbliższa nam następna zapaść ekonomiczna (dla średniej dł...
Simple .NET Core REST API CQRS implementation with raw SQL and DDD - Kamil Grzybek
Architektura 2114 dni, 22 minuty temu 215 źrodło rozwiń
If you're interested in C# 8.0 new features, come and read about nullable reference types :) We'll continue exploring next interesting features of C#8 in the weeks to come.
Sztuka programowania 2114 dni, 22 minuty temu 112 źrodło rozwiń
Rozwijanie usługi systemowej stworzonej z domyślnego szablonu w Visual Studio nie jest prostym zajęciem. Szczególnie debugowanie takiej aplikacji sprawia sporo problemów. Nie można z poziomu IDE uruchomić usługi i jej debugować. Trzeba podpinać się pod działający proces. W przypadku gdy chcemy zdebugować start usługi, musimy posiłkować się różnymi dziwnymi konstrukcjami, które zatrzymają start usługi do momentu podpięcia się debugera. W dzisiejszym wpisie będę...
Dzięki artykułowi dowiesz się wszystkiego co trzeba wiedzieć o poziomach testów w projekcie. Jakie mamy poziomy oraz jakie cele spełniają.
Sztuka programowania 2114 dni, 22 minuty temu 162 źrodło rozwiń
As part of my talk about real-time technologies in ASP.NET Core I mention that Web Push can be scaled with Azure Functions. In this post I'm showing how.
Okazuje się, że LSP można naruszyć na wiele sposobów, czasami bardzo trudnych do wyśledzenia, a sztampowe omówienia dostępne powszechnie pomijają najważniejsze aspekty literki L z SOLID’a. Warto wspomnieć, że LSP pomaga nam również lepiej modelować biznesowy kontekst aplikacji, gdyż zmusza nas do odpowiedzi na pytania o relacje pomiędzy obiektami (mam tutaj na myśli głównie dwa ostatnie punkty: inwariant i zasadę historii).
Sztuka programowania 2129 dni, 1 godzinę, 3 minuty temu 127 źrodło rozwiń
Na początek, jak zwykle, odrobina teorii. Reguła Liskov brzmi: Funkcje które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów. Jak podaje Wikipedia, zasada ta została sformułowana po raz pierwszy przez Barbarę Liskov i Jannette Wing we wspólnej pracy pt. „A Behavioral Notion of Subtyping„, zaprezentowana przez Panią Liskov w przemówieniu pt. „Data Abstraction and Hierarchy„, a s...
Sztuka programowania 2129 dni, 1 godzinę, 3 minuty temu 134 źrodło rozwiń
Reguła Open Close Principle mówi o tym, że klasa powinna być otwarta na rozszerzenia i jednocześnie zamknięta na modyfikacje. Zgodnie z zasadą tego cyklu – „Nie SOLID-nie„, przedstawiam jak może wyglądać klasa napisana wbrew tej regule. Przykład Skoro ostatnim razem, w przypadku reguły SRP, posłużyłem się przykładową klasą MessageProcessor, tym razem posł...
Sztuka programowania 2145 dni, 1 godzinę, 3 minuty temu 142 źrodło rozwiń