.NET, C#, Angular, TypeScript
Cel W książkach można przeczytać, że głównym celem tego wzorca jest zaadaptowanie (przystosowanie) istniejącej klasy do formy, którą oczekuje klient. Klientem w tym przypadku jest dowolny obiekt, który wywołuje nasz kod i wymaga odpowiedniego interfejsu. Teoria może być łatwa, ale trzeba jeszcze umieć zastosować ją w praktyce. Stwórzmy więc przykładową klasę BoardGameService. Jak widać, wykorzystujemy…
Kończąc czytać książkę „Czysta Architektura” Wujka Boba, natknęłam się na rozdział poświęcony organizacji elementów aplikacji. Przedstawił on 4 przykłady różnych architektur tego samego systemu. Zacznijmy od pierwszego typu architektury na przykładzie mojej aplikacji BoardGamesNook. Pakowanie w warstwy – 3 warstwy Tak pokrótce wygląda schemat architektury w mojej aplikacji. Mamy kontroler BoardGameController, który używa interfejsu IBoardGameService.…
W ostatnim wpisie opisywałam, jak używać komendy merge do łączenia zmian. Dzisiaj czas na kolejną komendę – rebase. Początek historii będzie taki sam, jak poprzednio. Dwóch autorów (autor1, autor2) pracuje na dwóch osobnych branchach (branch1, branch2). Każdy z nich wprowadza zmiany w tym samym pliku UserController. Autor1: zmiany na branch1 Zmiany na tym branchu polegały…
Załóżmy, że mamy jakiś branch master_xmpl, który jest głównym branchem naszego projektu. Wyobraźmy sobie, że 2 osoby w tym samym czasie pracują nad różnymi funkcjonalnościami. Każda z nich utworzyła swój branch za pomocą komendy checkout z parametrem b. git checkout -b branch1 Dla przykładu będą to branch1 dla osoby autor1 i branch2 dla osoby autor2. Autor1: zmiany…
Wyobraźmy sobie następujący scenariusz. Mamy jakąś bazę danych i chcemy do niej wstawić gotowe rekordy lub zaktualizować już istniejące. Załóżmy, że chcemy zaktualizować tabelę User i wstawić testowe wartości do kolumn Name i Surname. Nasz zbiór danych testowych wygląda następująco: Chcemy wstawić te dane do istniejącej tabeli. Jak możemy to zrobić? Zwykły skrypt Możemy napisać…
Jeszcze parę lat temu, gdyby ktoś mi powiedział, że mam zrobić jakikolwiek rebase, to uciekłabym daleko. Wszelkie akcje w GitBashu napawały mnie przerażeniem. Tylko jedna komenda była dla mnie w miarę bezpieczna: git status Czemu? Ponieważ nie mogła niczego popsuć. Pokazywała tylko listę wprowadzonych zmian na aktualnym branchu. Jednak wraz z upływem czasu GitBash stał się moim…
Kończąc zbiór wpisów (część 1, część 2) dotyczących FluentValidation czas na napisanie testów. Przykładowa klasa walidatora Dla przypomnienia, tak wygląda klasa BoardGameValidator: Jako dobrzy programiści, już na wstępie, zaraz przed zdefiniowaniem takiego walidatora, powinniśmy utworzyć testy sprawdzające jego poprawność. Ważne, żeby sprawdzić, czy dla każdego sprawdzanego warunku walidator zwraca prawidłowy status (informację o błędzie lub…
W poprzednim wpisie pokazałam prosty (i przy okazji brzydki) sposób na użycie pakietu FluentValidation do walidacji danych po stronie serwera. Dzisiaj czas na refactoring. Integracja Zacznę od tego, że nie muszę tworzyć za każdym razem w kontrolerze nowej instancji walidatora. Mogę skonfigurować specjalną fabrykę walidatora (wzorzec fabryki). Jak by to miało wyglądać? Wystarczy, że dodam…
Przykładowy widok dodawania nowego stołu do gry: Jak widać, ustawiam w formularzu sporo parametrów. Załóżmy, że chcę ustalić regułę: parametr Miasto musi się składać z minimum 3 znaków i mogą to być tylko litery i spacje. Skorzystam więc z paczki FluentValidation dostępnej przez nugeta. Pełną dokumentację można znaleźć pod linkiem. Przykład walidatora Klasa walidatora GameTableValidator.cs wygląda następująco:…
Co firma może zrobić, żeby zmobilizować swoich programistów do rozwoju? Jak uchronić ich przed stagnacją i „zasiedzeniem”? Jest na to kilka sposobów, które nie kosztują zbyt dużo (ani pracodawcę, ani pracownika). Mogą je zastosować firmy zarówno duże, jak i małe. Budżet szkoleniowy Są firmy, które jako benefit opłacają kartę Multisport czy lunchpassy. Zamiast tego, można…
Gdy tworzymy jakąś aplikację, często trzeba ją tak dostosować, żeby wygląd podobał się użytkownikowi i pomagał w jej użytkowaniu. Do tego przydają się na przykład ikony. Można je użyć chociażby do oznaczenia prostych operacji edytuj, dodaj lub usuń obiekt. Żeby użyć ikon, musimy skądś je pobrać. Najlepiej, żeby były darmowe, ładne i konfigurowalne (gdybyśmy chcieli…
Jestem aktualnie w trakcie lektury „Czysta architektura” Wujka Boba. Natknęłam się w książce na część wyjaśniającą odwrócenie zależności (ostatnią z zasad SOLID) w całkiem przystępny sposób. Jak brzmi ta zasada? Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Zależności między nimi powinny wynikać z abstrakcji. Fajnie, ale o co konkretnie chodzi? Co to są te…
Na pewno nie raz zdarzyło Wam się mieć trochę wolnego czasu. W tygodniu po pracy albo w weekend. Może na chorobowym. Co można wtedy robić? Można trochę odespać, poprzeglądać internet, obejrzeć cały sezon ulubionego serialu lub… pouczyć się trochę. Czemu warto się uczyć w trakcie wolnego? To nie powinno być dziwne. Nie mówię o tym,…
Kolejny wpis zainspirowany prezentacją Krzysztofa Kędzierskiego podczas konferencji BoilingFrogs 2018. Zacznę dość nietypowo od pytania: Jaka jest jego wartość? Zerowy dług techniczny jest wtedy, gdy nie ma żadnych bugów do poprawienia ani żadnych nowych funkcjonalności do napisania. Nic nie trzeba robić, nie ma długu. Jeśli chcemy zrobić nawet najmniejszą zmianę w kodzie, to już wtedy…
Masz jakieś API chciałbyś sprawdzić listę swoich endpointów? Swagger to najlepsze narzędzie do tego – do tworzenia interaktywnej dokumentacji API. Zaczynamy Wszystkie podstawowe informacje o swaggerze można znaleźć na stronie microsoftu. Krok 1 – instalacja biblioteki Po wpisaniu w wyszukiwarkę pakietów nuget słowo „swagger”, pierwsza biblioteka, która sie wyświetla, to Swashbuckle. Co ważne, swagger działa zarówno…