Przejdź do głównej zawartości

Posty

Wyświetlanie postów z kwiecień, 2017

Perfect Life app - test your software like google

As far as we talk about automated tests there are 3 levels of testing: 1. Unit tests 2. Integration tests 3. System tests Google propose another test classification, but it can be mapped directly to the above 3 points. So google uses 3 following test levels: 1. Small test 2. Medium tests 3. Large tests Google also defines how to keep the balance between test types. Here it is: 1. Small test - 70% 2. Medium tests - 20% 3. Large tests - 10% Today I'll show you how in my Perfect Life application I'm doing integration tests. In small project i think medium/integration test should play important role and I'd dedicate 50% of my tests to integration. Let's jump into the code. This is a client class placed in Xamarin application, that is responsible for calling .NET Core web service: This is a test for this class. Note it calls real web service: So for small project to keep test balance I would follow the following proportion: 1. Small test - 45% 2. Med

.NET Core - where are my nuget packages?

When you create your first application in ASP.NET Core in Visual Studio 2017 you can be surprised. It's worth to mention one fundamental change in comparison to the previous version of .NET. The most striking difference you'll notice is missing packages.config file. I promise, there's no reason to be worried. Continue reading and you'll get the idea of how Nuget packages are managed in .NET Core projects. The question you can ask yourself is "where are my Nuget packages defined?" I admit that there's no packages.config file in the project anymore but there's an alternative place. what is this place? Just look at the .csproj file: As you can see that there is an element in the XML file which contains a number of elements. These are the current project dependencies. Now all project configuration (including nuget packages) are defined in one file which I find convenient solution.

Postępy prac - usluga sieciowa w ASP.NET Core

W ostatnim tygodniu osiągnąłem kilka kluczowych celów: 1. Stworzenie serwisu internetowego w ASP.NET Core 2. Stworzenie testów jednostkowych dla serwisu 3. Wdrożenie aplikacji na serwerze produkcyjnym (C# działa oczywiście na Linuxie) 4. Stworzenie definicji builda na serwerze Visual Studio Team Services 5. Zdobyłem praktykę w łączeniu projektów ASP.NET 4.5 i .NET Core 6. Utworzenie na serwerze Apache reverse proxy do serwera Kestrel A teraz najciekawsze: zobaczmy kod. Kontroler naszego serwisu w ASP.NET Core prezentuje się następująco: Repozytorium, które wstrzykujemy do kontrolera i wykorzystujemy w testach odwołuje się do kolekcji przechowywanej w pamięci serwera. Jest to świetny sposób do wykorzystania w testach - zamiast łączyć się z bazą trzymamy wszystkie dane w pamięci fizycznej. Technikę tę wykorzystać można również do cache'owania danych, ale o tym kiedy indziej. Oto kod repozytorium: Zauważmy, że repozytorium powinno korzystać ze statycznych właściwości

ASP.NET Core MVC - wdrożenie na Linuxie krok po kroku

Dzisiaj skupimy się na wdrożeniu aplikacji ASP.NET Core MVC. Po przeczytaniu tego artykułu będziesz potrafił uruchomić swoją pierwszą aplikację ASP.NET Core na maszynie wirtualnej z systemem Ubuntu 14. Załóżmy, że mamy nasza aplikację gotową i chcemy ją uruchomić. Jak najłatwiej to zrobić? Podczas debugowania możemy roboczo wykorzystać Visual Studio do uruchomienia aplikacji na IIS Express. Jednak w warunkach produkcyjnych kiedy chcemy wdrożyć aplikację na systemie Linux, musimy poszukać innego rozwiązania. Dlaczego? Bo Linux nie będzie obsługiwał ani visual Studio ani IIS Express, ponadto jeśli korzystamy z Continuous Deployment, to chcemy wdrożenie robić z poziomu konsoli. Jak pisałem w poprzednich postach, wraz z nadejściem ASP.NET Core MVC, mamy możliwość wdrażania aplikacji napisanych w C# na platformie Linux. To niezwykle istotne, bo przynosi ogromne korzyści, choćby dlatego, że ceny hostingu są kilka razy niższe dla maszyn z Linuxem niż z Windowsem. 1) Framework-depen

Perfect Life - usługa oparta o Web API w .NET Core

Dzisiaj pokażę jak skonfigurowałem mój web service Weight, który będzie wywoływała aplikacja mobilna Perfect Life w celu zapisania(i odczytania) wagi użytkownika na serwerze. Dotychczas tworzyłem usługi w ASP.NET 4 i umieszczałem na Azure. Mógłbym tak zrobić i tym razem, ale stawiam na rozwój i chcę użyć ASP.NET MVC Core i Visual Studio 2017. Jak zacząć? Tworzymy nowy projekt w Visual Studio. Będzie to aplikacja webowa ASP.NET Core. Po utworzeniu projektu dodajemy następujące linie w pliku .csproj(pamiętajmy, że Microsoft wycofał się ostatecznie z pliku project.json wracając do formatu XML). Konfiguracja pakietów wygląda tak: Jeśli wystartujemy naszą aplikację na serwerze IIS a następnie spróbujemy wywołać usługę za pomocą Postmana, albo dowolnej przeglądarki www, to otrzymamy błąd 406. Aby ten problem rozwiązać dodajemy następujący fragment w klasie Srartup: Wstępnie kontroler dla mojej usługi obejmuje dwie metody: POST - akcja będzie służyć do zapisu wagi przez użytkown

Fotorelacja z pilskiej konferencji MeeTTech

W minioną środę w Pile odbyła się kolejna edycja konferencji MeeTTech, której jestem współorganizatorem. Opowiem dzisiaj trochę o tym co się działo. 1. Liczby Na początku przedstawię kilka liczb. Odwiedziło nas ponad 60 osób. Na wydarzenie na Eventbrite zarejestrowało się 56 osób. Co jest o 1 więcej niż podczas poprzedniej edycji. Biorąc pod uwagę, że na promocję mieliśmy niecały tydzień, jest to świetny wynik. Co Ważne, więcej niż połowa zapisujących się osób trafiła na stronę Eventbrite przez Facebooka. 2. Miejsce Konferencja odbyła się w pilskim Inwest Parku przy ul. Dąbrowskiego 8. Ostatnim razem konferencja odbywała się w Sali Beżowej, która była wypełniona po brzegi obecnymi bądź przyszłymi programistami. Teraz mieliśmy do dyspozycji większą salę - kuluary. A wyglądało to tak: 3. Pierwsza prelekcja - Alan Sierhej Jako pierwszy wystąpił Alan Sierhej, programista na codzień pracujący w STX Next w Pile, ze swoim tematem dotyczącym pozycjonowania stron internetowy

Aplikacja Perfect Life - Sprint 2 - planowanie

Drugi sprint czas zacząć. Tym razem na pierwszy ogień pójdzie dodawanie wagi i wykresy słupkowe. Będę chciał stworzyć odpowiednią usługę sieciową(technologia Web API .net core), która będzie odpowiedzialna za przechowywanie danych w bezpiecznym miejscu na serwerze. Usługę będę hostował na linuxie, co umożliwia nowy .NET Core i serwer Kestrel. Do niedawna wydawało się niemożliwe wdrożenie aplikacji opartej o .NET na platformie innej niż Linux. Obecnie to działa bardzo dobrze i na pewno w przyszłości opiszę proces tworzenia i wdrożenia aplikacji .NET na Linuxie. Bardzo lubię opisywać wymagania dla aplikacji w języku Gherkin. Plan na najbliższy sprint opisany w języku Gherkin wygląda następująco:

Konferencja MeeTTech w Pile

W ostatnich kilku latach programowanie stało się tak popularne, że w wielu polskich miastach są organizowane konferencje poświęcone temu tematowi. Na przykład konferencja 4Developers w Warszawie przyciągnęła w tym roku 1800 uczestników. Co więcej, organizatorzy planują jesienią tego roku dodatkową edycję w Gdańsku. Czy warto jeździć na konferencje programistyczne? Uważam, że zdecydowanie tak. Dlaczego? Bo można posłuchać jak bardziej doświadczeni programiści projektują architekturę swoich systemów i rozwiązują skomplikowane zadania. Dodatkowo można podpatrzeć z jakich narzędzi korzystają w celu usprawnienia pracy programisty albo w celu szybszego wdrażania aplikacji na środowisko produkcyjne. Chciałbym dzisiaj zaprosić Was do udziału w konferencji w mniejszym mieście - na przykład w Pile. Konferencja programistyczna MeeTTech środa 12.04.2017, godzina 18:00 Inwest Park ul. Dąbrowskiego 8, 64-920 Piła Oto budynek pilskiej spółki Inwest Park w którym odbędzie się konferencja: Za

Podsumoweanie pierwszego sprintu.

Dziś szybkie podsumowanie sprintu. Generalnie prace polegały na testowaniu funkcjonalności zaimplementowanej już przeze mnie. Aplikacja działa prawidłowo, zgodnie ze scenariuszami Gherkin. Dane użytkownika konta google chcę wykorzystać do tego aby zapisywać pomiary każdego użytkownika, co pozwoli użytkownikom na śledzenie swoich postępów. Wybrałem gotowy system logowania google zamiast samodzielnie implementować mechanizm rejestracji, zmiany hasła, logowania. Nie chcę też przechowywać wszystkich danych użytkowników a jedynie ich pomiary, które będziemy prezentować na wykresach. Do zaimplementowania były scenariusze: # language: pl Właściwość: Jako użytkownik aplikacji mobilnej chcę ekran logowania aby mieć możliwość zapisywania swoich postępów Scenariusz: Prawidłowe logowanie do aplikacji Mając aktywne konto google Jeśli na ekranie logowania podam swój login i hasło I zatwierdze dane odpowiednim przyciskiem Wtedy będę miał dostęp do wszystkich funkcjonalności aplikac