Gdy tworzymy jakieś API dobrze jest sprawdzić, czy ono działa. Po każdej zmianie albo dodaniu nowego punktu wejścia (endpoint) powinniśmy przetestować, czy wszystko jest ok. Możemy to zrobić uruchamiając aplikację i ręcznie wszystko sprawdzając, jednakże na dłuższą metę jest to bardzo czasochłonne. Dlatego warto utworzyć osobny projekt, w którym stworzymy testy sprawdzające czy nasze API działa poprawnie. W kilku punktach postaram się opisać jak u mnie z reguły wygląda taki projekt z testami API.
Strona głównaUżytkownik
Admu | użytkownik
Jak dużo czasu poświęcacie na zrozumienie kodu, gdy trzeba w nim coś zmienić? Czasem kod jest na tyle czytelny, że wszystko widać od razu, a czasami trzeba poświęcić po kilka-kilkanaście godzin, aby zrozumieć co się w nim dzieje. Z czego to wynika? Mam kilka przemyśleń na ten temat.
Sztuka programowania 1688 dni, 5 godzin, 26 minut temu 75 źrodło rozwiń
Kto lubi ciasto? Ja uwielbiam! Zwłaszcza takie dotnetowe :) Cake pozwala pisać build skrypty w C#. Zamiast ręcznie uruchamiać skrypty, albo bawić się Powershellem, można je zaprogramować w znanym języku. Co lepsze, można stworzyć repozytorium i w nim trzymać cały kod związany z deploymentem
Programowanie rozproszone 1704 dni, 4 godziny, 5 minut temu 66 źrodło rozwiń
Ostatnio pisałam o podstawach Cake. Dzisiaj czas na opis nowego projektu wykorzystującego Cake do uruchamiania skryptów np. az-cli. Stworzyłam na GitHubie specjalne repozytorium, z którego możecie korzystać.
Czy mieliście czasem wrażenie, że wraz z upływem czasu, kod w projekcie staje się coraz gorszy? Że się starzeje? Że jest coraz trudniejszy w utrzymaniu? Że pojawia się coraz więcej miejsc gdzie został zaciągnięty dług techniczny i nie został on potem spłacony? Albo może mieliście w swoich projektach takie miejsca, których nikt nie chciał dotykać? Wyglądały strasznie i każdy się bał, że gdy coś tam zmieni, to coś innego wybuchnie? Zapewne cześć tego kodu została napisana przez nas, część przez naszych ko...
Sztuka programowania 1695 dni, 5 godzin, 16 minut temu 81 źrodło rozwiń
Często słyszę, jak te pojęcia są mylone i używane zamiennie, a tak naprawdę tyczą się zupełnie różnych rzeczy. Pokrótce postaram się przybliżyć oba te terminy, a także zaproponować sposób, jak z nimi żyć.
Architektura 1702 dni, 4 godziny, 13 minut temu 51 źrodło rozwiń
Już po raz trzeci pojawiłam się na wrocławskiej konferencji BoilingFrogs dotyczącej software craftsmanship. Na jakich wykładach byłam i czy było warto?
Spotkałem już kilka nazw, a każda z nich wskazywała na tę samą architekturę. Różniły się one co prawda tym, jak był rysowany wykres zależności, ale idea była taka sama. Ogólnie mówiąc, ta architektura wydaje się czymś naturalnym, a mimo wszystko jest wciąż dość rzadko spotykana. Czym się wyróżnia? Tak w skrócie, to w tej architekturze najważniejsza jest logika biznesowa, tzw. „Core” aplikacji. Jest tam zdefiniowane wszystko to, co jest niezbędne dla działania. Wszystko inne jest implementowane w oddziel...
Architektura 1716 dni, 4 godziny, 24 minuty temu 151 źrodło rozwiń
Czy byliście kiedyś w sytuacji, że dołączyliście do istniejącego już projektu, zagłębiliście się w jego kod i architekturę, a następnie uznaliście, że to jest bez sensu? Że ktoś dał mocno ciała wybierając architekturę pod projekt albo podejmując inne ważne decyzje? Jednak nie macie kogo o to spytać, bo żadna z osób, które podejmowały te decyzje, już w tym projekcie nie pracuje? Może nawet postanowiliście zrobić refaktoryzację i po kilku godzinach/dniach okazało się, że jednak początkowe rozwiązanie było ...
Architektura 1722 dni, 4 godziny, 24 minuty temu 83 źrodło rozwiń
Jakiś czas temu w pracy miałam ciekawy przypadek. Mianowicie – losowo wywalał się jeden z testów. Powodem był NullReferenceException w logice. Żeby dojść do problemu, trzeba było przeanalizować trochę kodu, w którym był użyty Parallel.ForEach() i lista obiektów. Gdzie był błąd i jak go naprawiłam? O tym we wpisie.
Sztuka programowania 1724 dni, 5 godzin, 2 minuty temu 172 źrodło rozwiń
Gdy piszemy metodę, która ma coś wykonać i ta operacja się nie powiedzie, zastanawiamy się co w takiej sytuacji zrobić: czy lepiej jest rzucić wyjątek, czy może zwrócić rezultat z odpowiednim statusem? Przyjrzyjmy się obu rozwiązaniom.
Architektura 1731 dni, 4 godziny, 53 minuty temu 155 źrodło rozwiń
Kolejna edycja konkursu DevAdventCalendar skończyła się już jakiś czas temu. Przed startem edycji napisałam post opisujący nowe zasady konkursu. Teraz czas na podsumowanie i odpowiedź na pytanie: czy DevAdventCalendar 2020 jest w ogóle możliwy?
W nowym wpisie czas na kolejny etap: Pipelines (wcześniej nazywane Builds), czyli budowanie aplikacji. Zaczynamy!
W poprzednim poście pisałem o bibliotece FluentValidation i jak ją dodać do naszego projektu. W tym poście skupimy się na bardziej zaawansowanych funkcjonalnościach, jakie nam ta biblioteka udostępnia: - Walidacja złożonych właściwości (manualna i automatyczna) - Wspólny walidator właściwości - Walidacja listy - Własny komunikat błędu walidacji - Wspólne walidatory - Warunki walidacji - Reguły zależne od siebie - Wywołanie zwrotne - Asynchroniczna walidacja
I oto nastał 56. odcinek podcastu w którym to rozmawiamy o tym co ciekawego można znaleźć w projekcie. Czy nowa/stara technologia to jedyne co daje projekt? Czy może jest może coś jeszcze? 📨 Nasze poczynania możesz także śledzić innych stronach: ostrapila.pl/subskrybuj 📖 Plan na podcasty dostępny jest na trello: trello.com/b/yXGeD0Ud/tematy-podcastów. 💌 Możesz tam śmiało komentować przyszłe odcinki. Jeśli chcesz usłyszeć o czymś czego nie ma na liście zo...
Boilerplate to kawałek kodu, który w szybki sposób pomaga wystartować pisanie kodu. Pewnego rodzaju szablon. Zamiast startować z pustym projektem i dodawać za każdym razem od nowa te same cegiełki, możemy posłużyć się boilerplatem, który te cegiełki już zawiera. Ostatnimi czasy kilka razy tworzyłem od początku aplikację w .NET Core, a w ramach tej aplikacji odpowiedni zestaw projektów oraz komponentów. Za każdym razem schemat postępowania był bardzo podobny – w jednym projekcie API, w kolejnym projekcie...
Architektura 1752 dni, 5 godzin, 41 minut temu 247 źrodło rozwiń
W prawie każdym projekcie jest potrzebna jakaś walidacja danych. Klasy służące do walidacji można napisać samemu, ale można również skorzystać z gotowych bibliotek. Najbardziej lubię FluentValidation. Jest to biblioteka, która ułatwia tworzenie „walidatorów” – klas zawierających reguły walidacji.
Ostatnio było szybkie wprowadzenie, dzisiaj już jedziemy z koksem! Zaczniemy od utworzenia repozytorium w Azure DevOps.
Zgodnie z wyborem części z Was, która wzięła udział w ankiecie na twitterze, czas na nowe wpisy dotyczące Azure DevOps! Zacznijmy od szybkiego wprowadzenia!
Może się zdarzyć tak, że nasza aplikacja rzuci wyjątek, którego się nie spodziewaliśmy. Nie wygląda to dobrze, jeśli taki nieobsłużony wyjątek trafi do użytkownika. Dodatkowo, jeśli nie otrzymamy informacji o tym, że taki wyjątek wystąpił, trudno będzie nam go poprawić i nie dopuścić do jego powtórzenia. W związku z tym warto w naszej aplikacji dodać globalną obsługę wyjątków i ich logowanie. O tym, jak skonfigurować logowanie, pisałem tutaj i tutaj. W tym poście pokażę kilka sposobów na złapanie takich...
Sztuka programowania 1758 dni, 4 godziny, 25 minut temu 279 źrodło rozwiń