Warsztaty‎ > ‎PlayFramework‎ > ‎

Start

  1. Przed zajęciami : 
    1. Zainstalować scalę 2.10.3 lub 2.10.4
    2. Zainstalować Scala IDE (lub InteliJ jak ktoś woli)
    3. Zainstalować Play 2.2 (bo dla 2.3 jeszcze IDE kuleje)
    4. Dodać polecenie play do ścieżki
    5. Zrobić na szybko projekt "play new rozruch"
    6. Odpalić play "play"
    7. Po uruchomieniu się konsoli odpalić aplikację "run"
    8. Dzięki temu jeszcze przed warsztatami dociągną się wszystkie zależności
  2. Pierwsze zetknięcie z funkcjami w Scali
    1. Deklaracja funkcji jako zmiennej
      1. Pokazać proste deklaracje i przypisania funkcji
      2. zadanie : zadeklarować funkcję i wywołać ze zmiennej
    2. Kompozycje funkcji
      1. zadanie : zbudować funkcję z już istniejących z użyciem andThen oraz compose
    3. Funkcje wyższego rzędu
      1. Pokazać kilka przykładów z przekształceniem listy
        1. suma wszystkich liczb nieparzystych z zakresu "1 to 100"
        2. imiona wszystkich pełnoletnich użytkowników
      2. zadanie: transformacja listy przy pomocy filter i map
      3. zadanie: zminimalizować zapis  wykorzystując podkreśliniki
    4. Currying
      1. Pokazać prosty przykład : dodawanie(a:Int)(b:Int)=a+b
      2. wytłumaczyć, że to działa jak dependency injection
      3. zadanie: będzie dana funkcja w stylu cenzuruj(slownik:List[String])(tekst:String) i trzeba będzie stworzyć coś ala fabryka funkcji cenzurujących z ustalonymi słownikami
    5. Serwer jako funkcja
      1. Stworzyć typy Request(url:String) i Response(resultCode:Int)
      2. Stworzyć funkcję Action:Request=>Response
      3. Przejść z zapisu nawiasowego "()" na zapis klamrowy "{}"
      4. Pokazać że zapis def serwer=Action{request=>response} jest zwyklym kodem scali
      5. zadanie : napisać funkcję Request=>Response, która 
        1. dla Request("/jug/warsztaty/) zwraca Response(200)
        2. dla innych zwraca Response(404)
        3. dla pustego url zwraca Response(500)
  3. Play
    1. Stworzyć nową aplikację "warsztaty" i uruchomić
      1. jeśli każdy zrobić część "przed zajęciami" to nie powinno być problemu
    2. Zmienić nagłówek defaultowej aplikacji playa (zazwyczaj wybierane jest albo "hello world" albo "dupa")
      1. zadanie: wzorując się na metodzie index stworzyć w kontrolerze Application własną ackję, która zwraca tekst "hello world" (albo "dupa")
      2. Analiza typu wiadomości i nagłówków w httpinspektorze czy czymś takim
      3. Zadanie: wykorzystując metodę "as" (nie mylić z "ass") ustawić typ "text/html"
      4. Zamiast tekstu wysłać w odpowiedzi xml <klucz>wartosc</klucz> i sprawdzić typ wiadomości
    3. Pokazać prostą konstrukcję Jsona
    4. Obsługa parametrów
      1. zadanie: wypisać tekst zawierający parametr przesłany w query
      2. zadanie: wypisać tekst zawierający parametr przesłany jako część URL
    5. Szablony część 1
      1. Stworzyć prosty szablon, który coś wypisuje (wiadomo jakie opcje można wypisać)
      2. Wywołać szablon z kontrolera
      3. Przekazać parametr do szablonu
        1. wytłumaczyć dlaczego to dobrze, że mamy błąd kompilacji gdy szablon p[rzymuje String a my rpzekazujemy Int
        2. zadanie:stworzyć szablon, który ma pełen html i przyjmuje dwa parametry (ścieżkę do css przekopiować z main)
    6. Testy
      1. Analiza wygenerowanych testów
      2. zadanie : stworzyć nową akcję w kontrolerze i napisać do niej test
      3. Pokazać, że widok to zwykła funkcja, którą można sobie wywoływać w konsoli Scala
      4. zadanie: napisać test jednostkowy do widoku stworzonym w poprzednim punkcie (albo worksheet)
    7. szablony część 2
      1. Kompozycja szablonów - tiles w 30 sekund
      2. zadanie : stworzyć główny layout
      3. Pokazać jak tworzy się niezależne taile
      4. zadanie:stworzyć tail "menu"
      5. zadanie:stworzyć taga do wypisywania listy słów w html
    8. Reverse routing
      1. Pokazać jak reverse routing rozwiązuje problem zmieniających się urli
      2. zadanie: stworzyć nową akcję i dodać link z reverse routingiem do menu
      3. zadanie: użyć reverse routing w testach
Comments