Miesięczne archiwum: Luty 2017

Jak zacząć z FreshMVVM

Jak zacząć z FreshMVVM w Xamarin Forms

W post 7 framework-ów MVVM jakie możecie wybrać przedstawiłem wam kilka możliwych opcji do wyboru jeżeli chodzi o MVVM. Dzisiaj chciałbym przedstawić jeden z nich FreshMVVM.

Jak zacząć z FreshMVVM w Xamarin Forms? FreshMVVM jest prostym i mały framework-iem stworzonym specjalnie na potrzeby Xamarin Forms. Jego autorem jest Michael Ridland.

Naszym przykładem jaki wykorzystam będzie prosta aplikacja Todo.

Jak zacząć z FreshMVVM w Xamarin Forms`

A więc zaczynamy.

FreshMVVM struktura

FreshMVVM stosuje koncepcję „Convetion over Configuration” dlatego też ważna jest struktura naszego projektu.

Koncepcje jakie są ważne to:

  • Page – nasza strona, którą tworzymy w XAML
  • PageModel – nasz ViewModel, który odpowiada za całą obsługę całej logiki aplikacji

A więc tworzymy nasz projekt przez File -> New -> Project lub CTRL+SHIFT+N, wybieramy szablon Blank Xaml App (Xamarin.Forms Portable).

Pobieramy z NuGet pakiety FreshMVVM i PropertyChanged.Fody. Uruchamiamy konsolę Package Manager Console i piszemy

Install-Package FreshMvvm -ProjectName FreshTodoApp
Install-Package PropertyChanged -ProjectName FreshTodoApp

Kolejnym krokiem jest stworzenie struktury projektu

Jak zacząć z FreshMVVM w Xamarin Forms - Struktura

Tworzymy katalogi Models, PageModels i Pages będą nam one potrzebne do trzymania się konwencji jaka jest używana w FreshMVVM.

  • Models – tutaj trzymamy nasze klasy POCO np. pobrane przez HTTP
  • PageModels – tutaj trzymamy nasze klasy VM
  • Pages – tutaj trzymamy nasze strony

Trochę kodu

A więc tworzymy naszą pierwszą stronę TodoItemPage wybieramy folder w Solution Explorer i Add -> New Item -> wybieramy szablon Forms Xaml Page lub CTRL + SHIFT + A.

Strona TodoItemPage wygląda jak na listingu

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="FreshTodoApp.Pages.TodoItemPage">
  <StackLayout Margin="20" VerticalOptions="FillAndExpand">
    <Label Text="Name" />
    <Entry Text="{Binding Todo.Name}" />
    <Label Text="Note" />
    <Editor Text="{Binding Todo.Note}" VerticalOptions="FillAndExpand" />
    <Label Text="Done" />
    <Switch IsToggled="{Binding Todo.Done}" />
    <Button Text="Save" Command="{Binding SaveCommand}"/>
    <Button Text="Cancel" />
    <Button Text="Delete" />
  </StackLayout>
</ContentPage>

Jak widzicie mamy stworzone już Binding-i w naszym kodzie XAML. Teraz zajmiemy się naszym PageModel.

Jak poprzednio w katalogu PageModels dodajemy pustą klasę C# TodoItemPageModel, ważne jest tutaj nazewnictwo żeby zadziałał nam automatyczny binding. Musi ona dziedziczyć po FreshBasePageModel.

Klasa TodoItemPageModel listing

using FreshMvvm;
using FreshTodoApp.Models;
using Xamarin.Forms;
using PropertyChanged;

namespace FreshTodoApp.PageModels
{
    [ImplementPropertyChanged]
    public class TodoItemPageModel : FreshBasePageModel
    {
        public TodoItem Todo { get; set; }

        public Command SaveCommand
        {
            get
            {
                return new Command(async () =>
                {
                    await CoreMethods.DisplayAlert("Info", $"Create task with name {Todo.Name}", "Ok");
                });
            }
        }

        public override void Init(object initData)
        {
            Todo = initData as TodoItem;
            if (Todo == null)
                Todo = new TodoItem();
        }
    }
}

Dla formalności TodoItem wygląda następująco

using PropertyChanged;

namespace FreshTodoApp.Models
{
    [ImplementPropertyChanged]
    public class TodoItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Note { get; set; }
        public bool Done { get; set; }
    }
}

FreshPageModelResolver

Żeby to wszystko zadziałało z pomocą przychodzi nam FreshPageModelResolver. Odpowiada on za powiązanie PageModel z odpowiednim Page.
W App.xaml.cs dodajemy linijkę

MainPage = FreshMvvm.FreshPageModelResolver.ResolvePageModel<TodoItemPageModel>();

Więc jak widzicie w całkiem szybki sposób otrzymujemy działającą aplikację zgodną ze wzorcem MVVM. Pytanie takie do was czy używaliście gdzieś produkcyjnie FreshMVVM?

jaki framework MVVM wybrać

7 framework-ów MVVM jakie możecie wybrać

A więc jesteście na początku zaczynacie pisać swoją aplikacją w Xamarin Forms. Ale jaki framework MVVM wybrać?

Jaki framework MVVM wybrać?

Framework-ów MVVM jest tyle co ludzi na świecie prawie jak bibliotek JavaScript :). Dzisiaj pokrótce przedstawię te, które udało mi się znaleźć lub mam jakieś z nimi doświadczenia.

Prism

Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamarin Forms.

Prism jest framework-iem do budowania aplikacji opartych o XAML (WPF, UWP, Xamarin Forms). Obecnie stabilna wersja dla Xamarin Forms to 6.2. Jest rozwijany niezależnie dla każdej platformy i oryginalnie wywodzi się z Microsoft patterns & practices. Od wersji 6.0 jest rozwijany jako open source i utrzymywany przez Brian Laguna’s. Więcej szczegółów możecie wyczytać na jego blogu.

FreshMVVM

FreshMvvm is a super light Mvvm Framework designed specifically for Xamarin.Forms. It’s designed to be Easy, Simple and Flexible.

FreshMVVM super lekki i super szybki. Zaprojektowany specjalnie na potrzeby Xamarin Forms. Jego twórcą jest Michael Ridland, który postawił sobie za cel przesiadkę z natywnych aplikacji Xamarin pisanych z użyciem MvvmCross na Xamarin Forms. W ten sposób pojawił się FreshMVVM. Nic dodać nic ująć. Lekko, szybko i przyjemnie.

Exrin

Enterprise Xamarin Forms MVVM Framework

Exrin stworzony na potrzeby „dużych” aplikacji (przynajmniej ja tak to czuję). Jego twórcą jest Adam Pedley i jak mówi jego autor konfiguracja zajmuje sporo czasu ale daje największe wartości gdy mamy zespół liczący kilku programistów.

Xamvvm

Simple, fast and lightweight MVVM Framework for Xamarin.Forms with fluent API

Xamvvm kolejny z małych lekkich i przyjemnych frameworków MVVM. Z zalet daje nam prostotę użycia, automatyczny Binding do DataContext, oraz Fluent API. To chyba takie największe zalety (sprawdzimy wkrótce ;).

MVVMCross

The .NET MVVM framework for cross-platform solutions, including Xamarin.iOS, Xamarin.Android, Windows and Mac.

MvvmCross jeden ze starszych framework-ów MVVM, oraz jeden z większych.Pozwala nam pisać aplikację natywne iOS, Android i Xamarin Forms. Posiada bardzo mocno rozwiniętą społeczność na StackOverflow lub na forum Xamarin. Bardzo bogaty w funkcjonalność ale w moim odczuciu również skomplikowany. Nadaje się bardziej do dużych projektów.

MVVMLight

The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in WPF, Silverlight, Windows Store, Windows Phone and Xamarin

MVVMLight jako jeden z nielicznych nie jest rozwijany na GitHub. Jest również jednym z moich ulubionych framework-ów ze względu na prostotę i łatwość użycia. MVVMLight jest rozwijany przez Laurent Bugnion. Na jego stronie możecie również znaleźć więcej szczegółów na temat MVVM i nie tylko.

MVVMHelpers

Collection of MVVM helper classes for any application

MVVMHelpers nie jest to framework w pełnym tego słowa znaczeniu. Jest to zestaw klas ułatwiających pracę z aplikacjami tworzonymi w XAML w architekturze MVVM. Autorem jest James Montemagno

Podsumowując jak widzicie jest z czego wybierać budując swoją aplikację w Xamarin Forms i nie tylko. W następnych artykułach będę chciał przybliżyć wam każdą z wymienionych bibliotek MVVM. A więc do zobaczenia?

Czy warto zaczynać dzień o 5 rano?

Czy warto zaczynać dzień o 5 rano?

Od pewnego czasu wstaję codziennie o 5 rano. Wyjątkiem są weekendy ale czy warto zaczynać dzień o 5 rano? Postaram się na to odpowiedzieć, oraz jak to wygląda u mnie.

W wakacje rozpocząłem eksperyment pod tytułem „Dzień o 5 rano” na początku było łatwo słońce świeciło było ciepło i przyjemnie. Wstawałem chętnie i przeważnie brałem się za swoje zajęcia. No właśnie przeważnie…

To chyba w tym wszystkim jest najważniejsze ale jeszcze do tego wrócimy.

Następnie przyszła jesień i zima. Już nie jest tak kolorowo jest szaro-buro i zimno, nie chce się wychodzić z łóżka. Chce się spać jak najdłużej.

Jak zacząć

Dla każdego zdrowego człowieka optymalnym czasem snu jest 7-8 godzin dziennie. Jeżeli śpimy dłużej to przesypiam masę czasu. Dla przykładu.

Sen ok 9 godzin, czyli dłuższe od podręcznikowego o około 2 godziny co daje nam. W skali miesiąca 60 godzin i aż 730 godzin rocznie. Prawda, że są to duże liczby?

No dobra ale podjąłem wyzwanie. Chce zacząć wstawać wcześnie. Jak się za to zabrać?

U mnie poszło w miarę łatwo po prostu przestawiłem budzik na 5:00 i zacząłem wstawać. Ale jeżeli chcemy to zrobić w mniej brutalny sposób to:

    1. Ustawiamy budzik na 4:40. Ten etap nie wymaga chyba dalszego wyjaśnienia. Po prostu przestawiamy budzik i tyle.
    2. Skracamy czas. Każdego dnia skracamy czas snu o 1-2 minuty aż dojdziemy do równej 5:00
    3. Nagradzamy się. W wyrabianiu nawyków ważne są nagrody po osiągnięciu jakiegoś celu, czyli np. Definiujemy zadanie „Przez tydzień będę wstawał o 5:00” jeżeli osiągniemy ten poziom to dajemy sobie nagrodę może to być butelka wina ale i najnowszy model iPhone 🙂

Co nam daje wczesne wstawanie? 4 przykłady

  1. Jesteśmy wypoczęci. Po dobrze przespanej nocy wstajemy wypoczęci nic dodać nic ująć.
  2. Mamy mnóstwo energii. Jak powyżej.
  3. Nikt nam nie przeszkadza. To jest bardzo ważny punkt wszyscy w domu jeszcze śpią, żona, dzieci, sąsiedzi i można popracować w pełnym skupieniu.
  4. Mamy mnóstwo nowych pomysłów. Po całej nocy wstajemy z wypoczętym mózgiem gotowym do pracy. Powinno na to dać możliwość wykorzystania wreszcie jego możliwości i wygenerowania trochę pomysłów.

Ale jak to wygląda u mnie?

Jestem wypoczęty ale zimą jest z tym różnie podobnie jak z energią. Mam ciszę i spokój. Niestety w moim przypadku mam duże pole do popisu jeżeli chodzi o pomysły i baranie się za pracę.

Niestety często poddaje się i tracę poranek na tzw. pierdoły Poczta, Facebook, Twitter. Nie poddaje się i od dzisiaj wprowadzam plan naprawczy. Wygląda on następująco.

Naprawa

  1. Przez 7 dni będę wstawał o 5 rano
  2. Poranek będę zaczynał od porannych ćwiczeń
  3. Ok 5:20 będę brał się za pracę
  4. Powtarzamy listę ale w proporcjach 30-90 dni

Jest to metoda, którą podpatrzyłem na blogu Patryka Leszczyńskiego, którego lekturę również polecam.

Podsumowanie

Jeżeli wstajemy przed wszystkimi mamy tak naprawdę mnóstwo czasu na swoje najważniejsze zadania, cele i marzenia. Mówi o tym Jeff Sanders w swoim podcast 5 AM Miracle Podcast.

Takie wczesne wstawanie daje nam dużego kopa energii i możemy się od razu zabrać za najciekawsze rzeczy, które sobie przygotowaliśmy.

Podsumowując uważam, że warto wstawać o 5 rano mi to dało mnóstwo czasu, który mogę spędzić razem z rodziną. W tygodniu owszem pracuję dużo ale weekendy staram się mieć w 100% dla rodziny.

Przyszłość .Net według Microsoft w pigułce

Przyszłość .Net według Microsoft w pigułce

Przyszłość .Net według Microsoft jest świetlana ale czy aby na pewno? Czy problemy jakie powstały przy powstawaniu .Net Core nie przekreśliły wszystkiego? Postaram się odpowiedzieć.

.Net Core

Microsoft wraz z pracami nad .Net Core przemyślał całość produktu i zostawił tylko to co jest niezbędne w dzisiejszych czasach. Dlatego w .Net Core głównie możemy tworzyć rozwiązania oparte o Web i chmurę, szerokiej maści API (WebAPI lub Nancy).

Również .Net Core daje nam wolność wyboru platformy na jakiej możemy pracować jako programiści lub uruchamiać nasze rozwiązania.

Powstają multi platformowe narzędzia takie jak Rider

JetBrains Rider

od JetBrains. Przez niektórych nazywany Visual Studio killer-em. Albo doskonały edytor

Visual Studio Code

Visual Studio Code

C#

C# jest używany przez miliony programistów na świecie. Jest jednym z najbardziej popularnych języków programowania. Wystarczy spojrzeć na wyniki na Stack Overflow. Można go używać na wielu platformach i do szerokiej gamy rozwiązań. Od pisania gier z użyciem Unity, poprzez aplikacje mobilne w Xamarin, aplikacje web w ASP.NET, aplikacje LOB lub .Net Core micro serwisy na Linux ie w chmurze Azure, AWS albo egzotycznie Google Cloud.

Przyszłość C#, czyli C# 7

Rozwój C# pędzi jak lokomotywa. Każda nowa wersja przynosi jakieś ciekawe zmiany C# 2 dał nam Generics, C# 3 Integrated Queries, C# 4 dynamic (to akurat nie jest według mnie najlepszym pomysłem), async w C# 5, null conditional w C# 6. C# 7 nie będzie wyjątkiem ma dać nam nowe unikalne usprawnienia jak pattern maching. Od C# 6 można śledzić rozwój na GitHub w repozytorium dotnet/csharplang lub dyskutować na liście mailingowej csharplang.

Visual Basic

Visual Basic jest również używany przez całe rzesze programistów na całym świecie. Głównie jest wykorzystywany do tworzenia aplikacji Windows Forms, rzadziej aplikacji web. Ankieta dla deweloperów Stack Overflow nie była łaskawa dla Visual Basic. Był to język numer jedne, który deweloperzy chcieli zmienić na inny.

Przyszłość VB, czyli VB 15

VB and C# Coevolution w marcu 2010 roku Microsoft ogłosił, że C# i VB będą rozwijane równolegle. Niestety po 6 latach okazało się, że C# był rozwijany zbyt agresywnie i jest za wiele różnic pomiędzy językami.

Do tej pory C# i VB dzieliły ze sobą wiele rozwiązań null-conditional, nameof, itd… ale również posiadały wiele drobnych różnic.

VB 15 będzie posiadał tylko część nowości jakie pojawią się w C# 7. Nie pojawią się takie rzeczy jak np. local functions, które mogłyby tylko przynieść więcej złego niż dobrego w czytelność kodu napisanego w VB.

Wszystkie zmiany związane z Visual Basic można śledzić na GitHub w repozytorium dotnet/vblang, oraz na liście mailingowej vblang.

F#

F# jest używany przez coraz większą grupę programistów. Według rankingu Stack Overflow jest trzecim najbardziej „uwielbianym” językiem programowania. Głównymi polami zastosowań są Web, usługi w chmurze, narzędzia i analiza danych.

F# ma zaskakująco duże wsparcie ze strony społeczności jest językiem, który od początku istnienia powstawał jako open source.

Przyszłość F#, czyli F# 4.1

F# 4.1 przyniesie nam dalszy rozwój narzędzi Visual Studio do pracy z językiem, wsparcie dla .Net Core i .Net Standard.

Rozwój języka można śledzić na GitHub w repozytorium visualfsharp.

Podsumowanie

Według mnie przyszłość .Net jest naprawdę warta uwagi i śledzenia.
Ruchy Microsoft związane z open source były naprawdę dobrymi posunięciami. Były one przemyślane i wprowadzone w życie w odpowiednim momencie.

W tej chwili my jako programiści .Net nie jesteśmy już „uwiązani” do jedynej słusznej platformy jaką jest Windows. Ba mało tego nie musimy używać Visual Studio ;). Możemy uruchomić .Net wszędzie i możemy używać różnych narzędzi do tworzenia.

A więc Microsoft tylko tak dalej, a czeka nas naprawdę super przyszłość i masę pracy. Może uda się pokonać Java na polskim rynku ;). Programiści zakasać rękawy i śledźcie dalsze poczynania Microsoft z .Net Core.

Do dzieła.

Daj się poznać 2017

A więc stało się. Daj się poznać 2017 czas zacząć i się zapisać

Daj się poznać 2017 jest drugą trzecią edycją konkursu organizowanego przez Maćka Aniserowicza z DevStyle.pl i ma na celu???
Wyciągnięcie programistów z ich piwnic i wyjście do ludzi/społeczności.

Daj się poznać 2017. Czym jest dla mnie???

Dla mnie jest to niesamowicie ważny krok na który zbierałem się od dawna. Dzisiaj pokonałem swój lęk i przestałem się bać tego, że ktoś wyśmieje to co robię. Kto wie może nauczę się prowadzenia prezentacji i pokonam kolejny lęk 🙂

Czego ja oczekuję???

  • Nauki i poznania naprawdę dobrze Xamarin, WebAPI z .Net Core oraz Docker (przynajmniej tak to sobie wymyśliłem)
  • Zbudowania marki (przy odrobinie szczęścia)
  • Sprawdzenia się

Podsumowanie

W skrócie klawiatura w dłoń koduj koduj i jeszcze raz koduj, a przy odrobinie szczęścia coś z tego będzie :). Największa satysfakcja to sam udział i dotarcie do końca.