czwartek, 30 marca 2017

ViewModels

Zgodnie z drugim dniem "MVC in 7 days"


Models
Zrobiłem Model Przedmiot (Item)
Zrobiłem Model Lista Przedmiotów (ItemBussinessLayer - fatalna nazwa moim zdaniem. Widocznie w późniejszych lekcjach nabierze to sensu.)


ViewModels
Zrobiłem ViewModel dla Przemiotu (ItemViewModel)
Zrobiłem ViewModel dla listy Przedmiotów + imię użytkownika (ItemListViewModel - też fatalna nazwa. Ten ViewModel zawiera końcowy ViewModel przekazywany do widoku.)

Controllers
Zrobiłem Controller, który:

  • bierze Listę Przedmiotów z (ItemBussinessLayer)
    • przekształca każdy element w ViewModel (ItemViewModel)
    • dodaje każdy przekształcony element do ostatecznego ViewModel (ItemListViewModel)
  • wyświetla widok
Views
Zrobiłem View, który:
  • wita użytkownika
  • wyświetla w tabeli listę przedmiotów z modelu przekazanego przez kontroler
Sounds complicated. And it is. Until you understand it.


środa, 29 marca 2017

Najlepszy wstęp do MVC (według mojej mamy, babci i kilku innych kobiet)

MVC - Model View Kontroler

WSTĘP

MVC to elegancki wzorzec architektoniczny. Elegancki bo dobrze segreguje kod. Wzorzec, bo jest to wzór działania. Architektoniczny, bo jest to wzór budowy aplikacji. 

Budując aplikację najprawdopodobniej będziesz chciał użyć jeszcze innych wzorców projektowych. O tym w innym odcinku.

ASP.NET MVC to framework dostępny w Visual Studio ułatwiające budowę aplikacji internetowej za pomocą MVC.  Framework to, w zestaw klas pomocny w pisaniu programu.

I think I need correcting.


Czego potrzebujesz aby zacząć zabawę z ASP.NET MVC?
  • Podstawowa znajomość HTML
  • Podstawowa znajomość C# i programowania obiektowego
  • Visual Studio (MVC4 wymaga wersji 2010)
Generalnie temat raczej nie jest dla osób dopiero zaczynających z programowaniem. Aczkolwiek da się. Ale nie mam czasu na pisanie takiego poradnika.


Model View Controller

Jak sama nazwa wskazuje MVC składa się z Modelu(a?), Widoku i Kontrolera. Model jest odpowiedzialny za obiekty, Widok - za ich wyświetlanie a Kontroler za komunikację między użytkownikiem a aplikacją oraz obliczeniami. 

STRUKTURA
  • Visual Studio wstępnie dzieli projekt na foldery, ten podział można zmienić.
  • Uruchomienie aplikacji
    • Klikam "Run"
    • Otwiera się przeglądarka
    • Aplikacja przechodzi do adresu __ (u Ciebie mogą być inne cyfry)

CONTROLLER
  • Znajduje się w folderze "Controllers"
  • Zawsze ma przyrostek "Controller"
     /// <summary>
    /// Here user can buy new Exercises, items for Avatar, tips to exercises, tutorial to exercises
    /// </summary>
    public class ShopController : Controller
    {
        // GET: Shop
        public ActionResult Index()
        {
            return View("Shop");
        }
    }


  • Wszystkie metody publiczne to Akcje
Akcja
  • Metoda publiczna, która znajduje się w kontrolerze
  • Może być wywołana przez url
    • localhost:/cyferki/NazwaKontrolera/NazwaMetody
    • np.: http://localhost:54149/Szop/Index
  • Metoda typu ActionResult zwraca widok. O tym zaraz
WIDOK
  • Ma rozszerzenie .cshtml
  • Każdy Widok ma swój Kontroler
  • Może być wywoływany metodą typu ActionResult
  • Może korzystać z
    • ViewData
    • ViewBag


No motyla noga no... to bez sensu. Ani to informatywne. Ani mi przydatne. Piszę dla sportu. Dla samego pisania. Jeżeli chciałbym napisać przewodnik, musiałbym pisać bardziej szczegółowo. Jeżeli miałbym pisać przypominajkę... to już napisałem. Możesz ją zobaczyć w poprzednim poście (Notatki odręczne). To jedyny sposób, żeby zawrzeć 100 stron z podręcznika na jednej kartce A4. 

Także... arono. Miałem wygrać ten konkurs ale chyba zmieniłem zdanie. Nie potrafię jeszcze zorganizować sobie pracy i czasu w ten sposób, żeby jednoczśnie robić aplikację, poznać nowe technologie i jeszcze napisać do tego tutorial. 

Ja sam jeszcze nie jestem w stanie dobrze ogarnąć co i jak. Zabieram się do budowy bazy danych. Jak na razie spędziłem godzinę na pisaniu tego. 

Nie kasuję. Zostawiam dla potomnych (wersji siebie). 

Dalsze posty będą w mapach myśli i takim o sobie tekstem.


niedziela, 26 marca 2017

Notatki odręczne

Nie miałem czasu na napisanie posta, więc wrzucam zdjęcie psa z kotem na głowie

Dog with cat on head
http://zwierzaki.be/770-mam-cos-na-glowie/

A także moje odręczne notatki. Osoba, która pierwsza odszyfruje co tu jest napisane, wygrywa prostego banana! Więcej szczegółów i wersja high quality wkrótce. 

MVC MindMap

środa, 22 marca 2017

Rezygnuję

Niestety. Taka jest cena dorosłości. Nie wyrobię się ze wszystkim.



Mamy tylko 24 godziny dziennie, co przekłada się na 1440 minut, co przekłada się na 3.1415923565 sekund... woha! Tak mało czasu, spieszmy się kochać ludzi, itd... cóż za odkrycie

Chcę zrobić 3 rzeczy:

  1. Zrobić kawałek appki
  2. Iść na taśmę
  3. Iść na warsztaty
Warsztaty są o 18:30. Jest godzina 15:30. Trzy godziny - świetnie! 15 minut posiłek, 90 minut aplikacja, 10 minut dojazd do parku, godzina latania po taśmie. W teorii - idealnie! W praktyce... you've got to learn a lot more, son.

Siadam do kompa i szybko do projektu! W końcu tyle technik szybkiej nauki umiem! I to szybkie czytanie! Raz dwa ogarnę wszystko i jazda!

Efekt tego był taki, że co przeczytałem, to jednym okiem wleciało, drugim wyleciało. 

Coś tam ogarnąłem, zanotowałem kilka słów, przepisałem trochę kodu. Uruchamiam. Nie działa. Damn... i teraz szukanie. "Przecież wszystko wpisałem dobrze". Patrzę na zegarek, "co?! Już minęło 20 minut?". Po pół godziny męczenia się z Heloł Łord ciśnienie mi się podniosło, zamknąłem lapka, załamałem się na 42 sekundy i poszedłem obierać ziemniaki.

Polecam obieranie ziemniaków.

Cóż... jeśli chcę zostać sławny i bogaty muszę ciężko pracować (gromki śmiech kołczów finansowych). A no tak. Postawiłem na pracę.

Kolejny wpis może uda mi się konkretnie technicznie napisać. Jakiś wstęp do MVC czy coś. I Gita.


niedziela, 19 marca 2017

Ramy projektu

Bez owijania, bardziej szczegółowo na temat tego, co będę robił.

Co?
  • Aplikacja internetowa wzorowana na grach idle wzbogacona o elementy edukacyjne.
Czym?
  • Microsoft Visual Studio
  • C#
  • ASP.NET MVC
  • GIT
  • Testy jednostkowe
Jak?
  • Podążając za przewodnikiem "Learn MVC Project in 7 days" napisanym przez Shivprasad koirala, Marla Sukesh na portalu codeproject.
  • Programując kawałek po kawałku mając ogólny zarys całości aplikacji koncentrując się na najbliższej iteracji.
Z czym zaczynam?
  • Znajomość podstaw języka C#, m.in.:
    • zmienne, pętle, funkcje,
    • klasy, obiekty, metody, metody wirtualne, interfejsy,
    • wiadomości wstępne na temat wzorców projektowych i dobrych praktyk tworzenia oprogramowania.
  • Podstawowa znajomość HTML, CSS i JavaScript.
  • Trochę informacji na temat gamifikacji.
  • Podstawy GIT
  • Coś tam o SCRUMIE, jakieś TDD, XP, Agile
Jakie są zadania na pierwszy tydzień?
  1. Zwlekać do niedzieli (najlepiej do późnego wieczora) z rozpoczęciem projektu.
  2. Otworzyć nowy projekt w MVC.
  3. Wrzucić projekt na gita.
Jakie są zadania na drugi tydzień?
  1. Nie zwlekać do niedzieli z rozpoczęciem prac nad aplikacją.
  2. Codziennie badać wyżej wymieniony tutorial i nabytą wiedzę zastosować w tworzeniu aplikacji.
  3. Opcjonalnie:
    1. Napisać zarys całej aplikacji.
    2. Napisać luźny podział na wersje, ustalenie czegoś na kształt kamieni milowych.
    3. Napisać szczegółowy plan pierwszych trzech wersji.
    4. Zastanowić się nad sensem życia, wszechświata i w ogóle wszystkiego.
Wish me luck!

wtorek, 14 marca 2017

The początek

night sky


Pomysł przyszedł pewnego pięknego (albo nie) wieczoru, kiedy to trzaskałem w myszkę grając w kolejnego clickera. W pewnym momencie zatrzymałem się i zdałem sobie sprawę z tego co robię.

Damn... mam 25 lat i od kilku godzin klikam w ciasteczko żeby mieć jeszcze więcej ciasteczek. Przecież mógłbym robić teraz coś pożytecznego. Mógłbym się czegoś uczyć. Się czegoś uczyć... czegoś uczyć... uczyć... 

Uczyć!

Skoro klikam w durne ciasteczko, po to żeby mieć więcej ciasteczek, czemu nie miałbym rozwiązywać zadań matematycznych żeby mieć więcej ciasteczek? Wiadomo... to musiałby być proste zadań (komu chce się męczyć z matmą). Ale jakby tak kroczek po kroczku?

Najpierw dodawanie. Do 10. Każdy umie dodawać do 10. Rozwiązując zadanie z dodawania do 10 dostaniesz jedno ciasteczko. Jak Ci się znudzi, możesz za 10 ciasteczek wykupić zadania z dodawania do 20! Te będą Ci dawać dwa ciasteczka! A potem odejmowanie! I mnożenie! I przewodniki do rozwiązywania zadań! I podpowiedzi! Potem zadania z iksem! Nagrody! Odznaki! Ulepszenia! Element społecznościowy! 

WSZYSCYUCZĄSIĘZBIERAJĄCCIASTECZKA!

W mojej wizji zobaczyłem jak wykupienie Wielkiej Fabryki Kosmicznych Ciasteczek jest równoznaczne z napisaniem matury, magistra a nawet pracy doktorskiej. Zobaczyłem renesans umysłu. Sława i wywiady. Te nagłówki gazet... "Człowiek, który zmienił bieg historii", "Jeden prosty trik sprawił, że nauczyciele całego świata go nienawidzą uwielbiają", "Dzięki Niemu, 5-cio latek w tydzień zdał maturę".

Po około trzech sekundach marzeń wróciłem do klikania. Udało mi się wybudować ciasteczkową świątynię.

Fast forward kilka tygodni miesięcy do przodu - wracam z pracy z kolegą i rozmawiamy na temat domowych projektów. "To weź zapisz się do konkursu" powiedział. 

To się zapisałem.