Archiwum autora: Maciej Gos

Podsumowanie tygodnia odc.3

Podsumowanie tygodnia odc.3

A więc mamy już piątek 24.03 więc czas na podsumowanie tygodnia odc.3. Za nami trzeci tydzień zmagań w Daj Się Poznać. A więc czas na garść moich sukcesów i porażek minionego tygodnia, oraz kilka linków które wydały mi się ciekawe.

Podsumowanie tygodnia odc.3

Co się udało

  • Kupić samochód – tak odkładałem to w czasie, a w końcu wyszło tak, że kupiłem już teraz. Strasznie mnie to wytrąciło z moich torów\planów i teraz nie mogę się pozbierać.
  • Obrączki – Kolejny ważny punkt na liści, odebraliśmy wreszcie obrączki.

Co się nie udało

  • 10Things – Założony plan z podpięcie testów xUnit legł w gruzach. Patrz punkty powyżej.

Ciekawe linki tygodnia

Xamarin

Różne

Podsumowanie

Od najbliższego tygodnia wracam do gry i mam nadzieję, że uda mi się przyśpieszyć pracę nad projektem.

Podsumowanie tygodnia odc.2

Podsumowanie tygodnia odc.2

A więc mamy już piątek 17.03 więc czas na podsumowanie tygodnia odc.2. Za nami drugi tydzień zmagań w Daj Się Poznać. A więc czas na garść moich sukcesów i porażek minionego tygodnia, oraz kilka linków które wydały mi się ciekawe.

Podsumowanie tygodnia odc.2

Co się udało

  • 10Things – prace nad projektem nabierają powoli tempa. Udało mi się zrobić nawigację i zacząłem podłączać testy jednostkowe xUnit.
  • Praca – chyba „przekopałem się” przez cały gąszcz zgłoszeń od klienta i opanowałem sytuację w projekcie.
  • Odpoczynek – znalazłem przyczynę ostatniego zmęczenia (brak lub niedobory snu). Czas na wdrożenie nowego planu tygodnia.

Co się nie udało

  • Praca – chciałem żeby projekt wyszedł lepiej ale nie zawsze się projekty udają :).

Ciekawe linki tygodnia

Xamarin

Architektura

Enterprise

10Things - Implementacja kontenera IoC

10Things – Implementacja kontenera IoC

Ciąg dalszy pracy na projektem 10Things. W dzisiejszym odcinku chciałbym opisać szczegóły implementacji kontenera IoC, oraz dalszy plan prac.

Implementacja kontenera IoC

W 10Things używam FreshMVVM, który ma zaimplementowany kontener IoC o nazwie FreshIoC. Pod spodem nie jest to nic innego jak TinyIoC ze zmienionymi namespace.

Jakie ma plus FreshIoC <-> TinyIoC?

  • Mały rozmiar – bibliotek FreshIoC waży tylko 42 Kb co czyni ją jedną z najlżejszych implementacji kontenera IoC
  • Prostota – robi tylko to co od niej oczekujemy, nie ma tutaj różnych „wodotrysków”
  • Szybkość – ze względu na rozmiar i prostotę jest bardzo szybki

Jakie ma minusy  FreshIoC < – > TinyIoC?

  • Wodotryski – brakuje w nim różnych zaawansowanych funkcjonalności kontenerów IoC

No dobra ale co sam autor twierdzi\pisze o tej bibliotece? Jako, że nie ma szczegółowego opisu FreshIoC będę się wspierał opisem TinyIoC.

Witaj TinyIoC

Welcome to TinyIoC – an easy to use, hassle free, Inversion of Control Container. TinyIoC has been designed to fulfil a single key requirement – to lower the „level of entry” for using an IoC container; both for small projects, and developers who are new to IoC who might be „scared” of the „big boys”!

To that end, TinyIoC attempts to stick to the following core principals:

  • Simplfied Inclusion – No assembly to reference, no binary to worry about, just a single cs file you can include in your project and you’re good to go. It even works with both Mono and MonoTouch for iPhone development!
  • Simplified Setup – With auto-resolving of concrete types and an „auto registration” option for interfaces setup is a piece of cake. It can be reduced to 0 lines for concrete types, or 1 line if you have any interface dependencies!
  • Simple, „Fluent” API – Just because it’s „Tiny”, doesn’t mean it has no features. A simple „fluent” API gives you access to the more advanced features, like specifying singleton/multi-instance, strong or weak references or forcing a particular constructor.

Tak autor określa funkcjonalność TinyIoC. Ale co nam po długich opisach, ahah i ochach nad biblioteką. Pora na porcję kodu jak tego w ogóle użyć.

Implementacja kontenera IoC. Mięcho, czyli Inversion Of Control po polsku

Mi osobiście bardziej podchodzi implementacja bez użycia Fluent API jak również wolę używać instancji jako Singleton.
Według Wiki Singleton to

Singleton – kreacyjny wzorzec projektowy, którego celem jest ograniczenie możliwości tworzenia obiektów danej klasy do jednej instancji oraz zapewnienie globalnego dostępu do stworzonego obiektu. Niekiedy wzorzec uogólnia się do przypadku wprowadzenia pewnej maksymalnej liczby obiektów, jakie mogą istnieć w systemie[1]. Niektórzy programiści uznają go za antywzorzec, ponieważ łamie zasady projektowania obiektowego, często bywa nadużywany[2] lub sprowadza się do stworzenia obiektowego zamiennika dla zmiennej globalnej[3][4].

Prosta rejestracja interfejsu w kontenerze

FreshIOC.Container.Register<IDataService, MockDataService); //As Singleton
FreshIOC.Container.Register<IUserDialogs>(UserDialogs.Instance); //As Singleton

Można użyć również Fluent API do rejestracji

FreshIOC.Container.Register<IDataService, MockDataService>().AsSingleton();
FreshIOC.Container.Register<IUserDialogs>(UserDialogs.Instance).AsMultiInstance();

Wstrzykiwanie zależności z użyciem konstruktora i nie tylko

W 10Things używam wstrzykiwania zależności za pomocą konstruktora co według mnie jest dobrą praktyką programistyczną. Znacznie lepszą niż użycie słówka Resolve.

Przykładem na użycie może być

public class MainViewPageModel
{
readonly IDataService dataService;
readonly IUserDialogs userDialogs;

public MainViewPageModel(IDataService dataService, IUserDialogs userDialogs)
{
this.dataService = dataService;
this.userDialogs = userDialogs;
}
}

Można to również zaimplementować używając słówka Resolve.

public class MainViewPageModel
{
readonly IDataService dataService;
readonly IUserDialogs userDialogs;

public MainViewPageModel()
{
this.dataService = FreshIOC.container.Resolve<IDataService>();
this.userDialogs = FreshIOC.container.Resolve<IUserDialogs>();
}
}

Jak widzicie użycie kontenera IoC nie musi być skomplikowane i trudne. Można to zrobić dużo prościej, przyjemniej. Podsumowując kontenerów Inversion Of Control jest tyle co grzybów po deszczu i każdy może znaleźć coś dla siebie. Ja wolę używać czegoś co jest lekkie i ma to co jest mi obecnie potrzebne.

10Things – co dalej

Będę rozwijał kolejne funkcjonalości aplikacji. Obecnie w planach mam dodanie obsługi menu (master detail), oraz stworzenie kontrolki kalendarza from scratch lub użycie gotowej. Chociaż wszystko wyjdzie w trakcie pracy.

Podsumowanie tygodnia

Podsumowanie tygodnia odc.1

A więc mamy już piątek 10.03 więc czas na podsumowanie tygodnia. Za nami pierwszy tydzień zmagań w Daj Się Poznać jak i również premiera Visual Studio 2017.

Poniżej garść moich osiągnięć i porażek, oraz co wydało mi się interesujące w minionym tygodniu.

Co się udało

  • 10Things – ruszyłem wreszcie z projektem i zacząłem implementację MVVM, oraz pierwszych stron
  • Uporałem się w pracy z dość „trudnym” tematem 🙂
  • Mój super tajny projekt „prezentu” na urodziny idzie zgodnie z planem

Co się nie udało

  • Ten tydzień był pasmem porażek ale wyniosłem z nich sporo wiedzy. Pamiętajcie, że można się zawsze czegoś nauczyć na swoich błędach
  • Nie udało mi się utrzymać mojego planu tygodnia
  • Nie udało mi się pisać na blog-a tak często jakbym chciał

Ciekawe linki tygodnia

GitHub

Xamarin

Różne i różniste

10Things nawigacja

10Things nawigacja – implementacja w mobile

A więc mamy kolejny tydzień konkursu, plan jaki sobie założyłem to implementacja nawigacji w 10Things. Jako, że aplikacja będzie korzystać z FreshMVVM dlatego też zacząłem zgłębiać tajniki nawigacji tego framework-a.

FreshMVVM daje nam 3 możliwe opcje nawigacji z pudełka „Basic navigation”, „Tabbed navigation” i „Master Detail navigation”.

Postaram się pokrótce przedstawić każdą z opcji, oraz jak ich użyć w aplikacji.

Jak zaimplementować – basic navigation

Jest to najprostsza i najczęściej spotykana forma nawigacji page-by-page. Zasada jej działania jest oparta na stosie FIFO. W implementacji jest ona bardzo prosta wystarczy zainicjować instancję FreshNavigationContainer.

Przykład

var page = FeshPageModelResolver.ResolvePageModel&lt;MainViewPageModel&gt;();
var navContaincer = new FreshNavigationContainer(page);
MainPage = navContainer;

Jak zaimplementować – master detail navigation

Jest to rodzaj nawigacji często spotykany w postaci szerokiej maści menu i nawigacjach typu rodzic dziecko. Pod maską do obsługi używa Dictionary<string, Page> do przechowania instancji PageModels.

Przykład

var navContainer = new FreshMasterDetailNavigationContainer();
navContainer.Init("Menu");
navContainer.AddPage&lt;MainViewPageModel&gt;("Ideas", null);
navContainer.AddPage&lt;SettingsViewPageModel&gt;("Settings", null);
MainPage = navContainer;

Jak zaimplementować – tabbed navigation

Tabbed navigation jest kolejnym często spotykanym rodzajem nawigacji w aplikacjach mobilnych. W Android jest to pasek zakładek wyświetlany na górze, natomiast w iOS pojawia się on na dole. Implementacja i użycie jest bardzo proste wystarczy utworzyć instancję FreshTabbedNavigationContainer.

Przykład

var navContainer = new FreshTabbedNavigationContainer();
navContainer.AddTab&lt;MainViewPageModel&gt;("Ideas", null);
navContainer.AddTab&lt;SettingsViewPageModel&gt;("Settings", null);
MainPage = navContainer;

Co dalej?

FreshMVVM daje nam dostęp do prostego API dzięki, któremu można w łatwy sposób zaimplementować niestandardową nawigację dziedzicząc po interfejsie IFreshNavigationService.

Przykład

public class CustomNavigationContainer : Xamarin.Forms.MasterDetailPage, IFreshNavigationService
{
....
}

var navContainer = new CustomNavigationContainer();
navContainer.AddPage&lt;MainViewPageModel&gt;("Ideas");
navContainer.AddPage&lt;SettingsViewPageModel&gt;("Settings");
MainPage = navContainer;

Podsumowanie

Jak widzicie implementacja nawigacji nie musi być wcale taka trudna bo można to zrobić lekko łatwo i przyjemnie. Niekoniecznie w takiej kolejności. Na chwilę obecną FreshMVVM wysunął się mocno na prowadzenie względem innych framework MVVM.

Ma on wiele zalet, a przede wszystkim jest bardzo lekki ok. 60kb.

Czy wy macie jakieś swoje ulubione framework MVVM? Jaka funkcjonalność jest dla was najfajniejsza?

Czym jest 10Things

Czym jest 10Things? I pierwszy commit

01.03.2017 to ważna data. Tego dnia rozpoczął się konkurs „Daj Się Poznać 2017” i powstał projekt 10Things. O samym konkursie nie będę się już rozpisywał oraz o tym czemu po co na co.

Wydażyła się również inna ważna rzecz, czyli pierwszy commit na GitHub w projekcie 10Things.

Chciałbym natomiast opisać trochę czym jest 10Things, czyli mój projekt, oraz jakich technologii chciałbym użyć.

Czym jest 10Things

10Things to aplikacja mobilna mająca za zadania stymulowanie naszego mózgu :). Dokładniej chce stworzyć produkt do rozwoju naszej kreatywności.

Cała idea jest opisana w książce „Become Idea Machine„. Sam pomysł na napisanie akurat takiej aplikacji został trochę zainspirowany przez Mirka Brunejko (za co mu wielkie dzięki).

Zasada działania samej aplikacji jest bardzo prosta. Każdego dnia będziemy dostawać jakiś losowy problem do „obróbki” na podstawie, którego będziemy wymyślać 10 pomysłów na jego rozwiązanie. Problemy mogą być abstrakcyjne np. „Jak rozwiązać problem głodu na świecie” lub trochę bardziej przyziemne np. „Jak wystartować działalność gospodarczą online w Czechach”.

Ale żeby nie było zbyt prosto to na każdych z tych problemów będziemy musieli wymyślić 10 pomysłów i dodatkowo będziemy mieli liczony czas.

Każdy dzień będziemy mogli później analizować w widoku kalendarza jak i w widoku statystyk. Na początku będzie ciężko ale później powinno być już tylko lepiej.

Rezultat jaki można osiągnąć po stosowaniu takich zabiegów to bardzo mocno rozwinięta pomysłowość.

Skąd się biorą problemy

No dobra dobra Maćku ale skąd się biorą te problem?

Będą je tworzyć ludzie.

Do tego celu powstanie strona przy pomocy, której ludzie będą mogli dodawać swoje pomysły na problem :). Trochę dziwnie to brzmi ale….cóż.

Będzie ona również służyć do głosowania na najlepsze pomysły.

Technologia

To co programiści lubią najbardziej technologia i gadżety :).

Jako, że jest to aplikacja mająca działać na wielu platformach będzie napisana w Xamarin.Forms. Platformami na które będzie dostępna to iOS i Android (nie koniecznie w tej kolejności) na razie nie planuje wersji na Windows.

Na część serwerową pomysł mam następujący

  • NoSQL prawdopodobnie wybór padnie na DocumentDB
  • React jako, że jest jednym z niewielu JS framework, które lubię
  • Docker jako, że od dawna mnie ciągnie w tą stronę. Tylko pytanie czy będzie mi faktycznie potrzebny

Podsumowując plany są duże i ambitne. Teraz pozostaje zakasać rękawy i jak mówi Gary Vaynerchuk

more more more

Lub bardziej po polsku i moja wersja

robić robić robić

 

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.