Posted on przez Daniel PlawgoWprowadzenie Postman jest genialnym narzędziem, bez którego nie wyobrażam sobie pracy nad WebApi. Kilka miesięcy temu opisywałem na blogu jak testować api z wykorzystaniem Postamana. Pokazałem jak wysłać żądania, używać zmiennych oraz zapisywać testowe żądania w kolekcje. Oczywiście Postman oferuje dużo więcej. W tym wpisie pokaże Ci jak można wykorzystać asserty w Postmanie do automatycznych testów, aby wykonywać je później w ramach CI/CD. Dzięki czemu możemy mieć większą ...
Strona głównaUżytkownik
ozgrozo | użytkownik
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ę...
Dwa tygodnie temu opublikowałem wpis o bibliotece Fluent Assertions, która bardzo ułatwia pisanie assertów w testach (zachęcam pierw do przeczytania tamtego wpisu). Pokazałem jak korzystać z biblioteki oraz jak łatwo można rozszerzać możliwości biblioteki o własne metody. Dzisiaj natomiast pokaże Ci, jak testować kontrolery w ASP.NET MVC za pomocą rozszerzenia o nazwie FluentAssertions.MVC (https://github.com/fluentassertions/fluentassertions.mvc). Poćwiczymy r...
Dzisiejszy post będzie trochę inny niż większość. Temat, który poruszę nie jest może jakoś mocno praktyczny i nie wykorzystasz go każdego dnia. Ale z drugiej strony może posłużyć jako ciekawy pomysł na pytanie rekrutacyjne, dlatego warto się nim zainteresować 🙂 Na początku zastanówmy się, czy klasa faktycznie może być prywatna. Chwila zastanowienia i prawdopodobnie myślisz sobie, że chyba nie. Po co w ogóle coś takiego byłoby potrzebne? Odpalasz Visual Stu...
W ubiegłym tygodniu pokazałem Ci w jaki sposób migrować schemat bazy w Entity Framework (zachęcam pierw do przeczytania tamtego wpisu). W tym wpisie pokaże Ci inną bibliotekę, którą możesz użyć do migracji schematu bazy, w momencie, gdy z jakiegoś powodu nie możesz użyć Entity Framework. Biblioteka nazywa się Fluent Migrator (https://fluentmigrator.github.io/) i w swoim działaniu jest bardzo podobna do mechanizmu migracji z Entity Framework. Największą różnicą ...
Bazy danych i XML 2263 dni, 4 godziny, 48 minut temu 107 źrodło rozwiń
W aplikacji czasami mamy fragmenty kodu, które dodajemy w różnych miejscach. Tak jak ostatnio opisywałem, możemy chcieć dodać cachowanie danych na poziomie logiki biznesowej, aby zmniejszyć ilość zapytań do bazy. W przykładzie dotyczącym CacheManagera wywołanie usługi CacheService dodałem bezpośrednio w kodzie logiki. Z jednej strony tego kodu nie ma zbyt dużo, ale z drugiej strony fajnie byłoby mieć ten kod automatycznie w każdej logice biznesowej. Szczególnie...
Wraz z rozwojem aplikacji oraz zwiększaniem się liczby użytkowników, stajemy przed coraz większymi problem związanymi z wydajnością. Szczególnie istotne jest to w momencie, gdy na przykład ruch na stronie jest na tyle duży, że serwer, z którego korzystamy jest wykorzystywany w 100%. Jednym z sposobów, który w miarę szybko daje spore efekty, jest dodanie mechanizmu cachowania często używanych danych. W tym wpisie pokaże Ci bibliotekę CacheManager (https://github...
Dodając nowy kontroler lub widok do aplikacji ASP.NET MVC wybieramy jeden z szablonów, które wykorzysta Visual Studio do ich wygenerowania. Jest to bardzo przydatne, gdy na przykład formularz edycji zawiera wiele pól. Visual Studio wygeneruje kontrolkę dla każdej właściwości z klasy, którą ustawimy jako model widoku. Podobnie jest z generowaniem kontrolerów. Jest to bardzo fajne, ale niestety na dłuższą metę tak wygenerowany kod, nie jest tym, co potrzebujemy i...
Wzorzec DAO (Data Access Object) jest jednym z częściej używanych wzorców do organizacji warstwy dostępu do danych . Dla każdego obiektu/tabeli z bazy (np User, Product) tworzymy dedykowany interfejs/klasy. Klasy te często nazywamy repozytoriami* (np. UserRepository, ProductRepository) i na ogół zawierają takie same metody. Jestem wielkim fanem szablonów T4. Lubie je wykorzystywać do automatyzacji tworzenia powtarzalnych i schematycznych elementów kodu. Właśni...
Zauważyłem ostatnio , że czasami zdarza mi się , że czytnik odcisków palców przestaje działać pod Windows 10 i trzeba logować się za pomocą pinu, lub o zgrozo wpisywania hasła. Sprawdziłem w menadżerze urządzeń i okazało, się że czytnik jest w w węźle urządzenia biometryczne, tylko, że system raportuje, że urządzenie jest wyłączone. Lekarstwem na to jest wejście do BIOSu przy starcie i przywrócenie ustawień domyślnych
Jeżeli zachodzi potrzeba żeby w naszej aplikacji chcemy mieć razorowe widoki, standardowa konfiguracja nie daje nam intelisense. Powoduje to, że czas stworzenia widoku znacznie się wydłuża, bo visual krzyczy nam błędami co chwilę i podkreśla wszystko na czerwono. Jest jednej sposób który pozwala załatwić sprawę...
Ten błąd jest konsekwencją architektury providera SQL Server dla linq to entities, który całe zapytanie konwertuje na SQL...
Sztuka programowania 3361 dni, 21 godzin, 35 minut temu 179 źrodło rozwiń
Jeżeli zdarzy się wam że nie można znaleźć programu przez wyszukiwanie w 10 , pozostaje prawdziwy dramat klikanie w menu start i odnalezienie programu ręcznie. Jeżeli chcemy szybko coś odpalić i jesteśmy w czasie sesji debugowania to ten błąd potrafi bardzo zaburzyć flow :) Podaję prostą receptę na tą dolegliwość...
Jeżeli używacie oprogramowania Time Doctor do monitorowania czasu spędzonego na programowaniu warto zajrzeć na ustawienia skrótów klawiszowych...
Niedawno w projekcie pisałem małą apkę która wykonywała pewne działanie, które muszą być uruchamiane cyklicznie. W celu uzyskania dostępu do katalogu aplikacji użyłem zmiennej System.Environment.CurrentDirectory . Wszystko działało podczas debugowania. Jakies było moje zdziwienie, gdy okazało się, że zmienna ta wskazuje na katalog C:\Windows\System32\ podczas uruchamiania procesu przez Task Scheluder, zamiast katalogu aplikacji. Po długich lecz owocnych :) poszukiwaniach udało mi się znaleźć rozwi...
Sztuka programowania 4033 dni, 4 godziny, 29 minut temu 330 źrodło rozwiń
Co rozumiem przez tryb offline ? Jest to przejście w taki tryb pracy gdzie wszystkie requesty przekierowane są na pewien landing page może informować np. że jest przeprowadzana aktualizacja, albo aplikacja jest przenoszona na nowy serwer, albo np. trwa aktualizacja serwera baz danych itp.
Jeśli chcemy zapisać plik tym czasowy Możemy dostać komunikat o błędzie "The File exists". Wbrew pozorom nie jest to spowodowane istnieniem pliku o tej samej nazwie...
Autorzy książki Ross Mistry i Stacia Misner opublikowali na blogu Microsoft Press najnowszą książkę na temat SQL Sever 2012 . Plik zajmuje ok 10 MB w formacie PDF. Plik można pobrać stąd. Na stronie źródłowej można przeczytać spis treści oraz przybliżoną cenę wersji papierowej - 14$ . źródło
Bazy danych i XML 4648 dni, 5 godzin, 58 minut temu 191 źrodło rozwiń
Na wstępie chciałbym przeprosić, że to tak długo trwało , ale ciężkie życie programisty nie zawsze pozwala mi znaleźć czas na częste blogowanie.W tej części mojego tutoriala zajmiemy się samą konfiguracją usługi log4net. Zasadniczo istnieją dwa możliwe podejścia do konfiguracji. Można stworzyć osobny plik konfiguracyjny i nazwać go np. log4net.config lub dodać sekcję do głównego pliku konfiguracyjnego aplikacji. Pierwszym przypadku należy samodzielnie odczytać plik za pomocą api konfiguracyjnego platform...
W każdej szanującej się aplikacji powinien być mechanizm logowania. Dobry to taki, który pozwala łatwo kontrolować poziomy logowania i wyrzucać wiadomości do wielu źródeł jednocześnie. Biblioteka log4net jest taką biblioteką. Jest łatwa w konfiguracji i obsługuje multum poziomów i targetów. Log4net ma trzy główne compomenty: loggery,appendery i layouty. Najprościej mówiąc appendery zajmują się wyrzucaniem wiadomości do konkretnego miejsca jak np. plik,albo baza. Layouty definiują format wyświetlania wi...