Come out and Play
Come out and Play
$20.00
Minimal-Preis
$27.50
Empfohlener Preis
Come out and Play

Dieses Buch ist 95% vollständig

Zuletzt aktualisiert: 2019-02-15

Über das Buch

Mit diesem Buch erfolgt ein praxisorientierter Einstieg in die Entwicklung größerer Webanwendungen mit dem Play Framwork, Scala, Akka und Scala.js.

Es wird vermittelt, wie man Webanwendungen mit dem Play Framework schreibt, Datenbankzugriffe via Slick implementiert, Aufgaben asynchron mit Futures und Aktoren umsetzt sowie geteilten und clientseitigen Code via Scala.js generiert. Für Authorisierung und Authentifizierung wird das Silhoutte Framework genutzt. Websockets, die aus den meisten Anwendungen nicht mehr wegzudenken sind, kommen ebenfalls zum Einsatz.

Das Buch vermittelt, wie man SBT zur Verwaltung und Organisation von Projekten nutzt. Kenntnisse von Scala werden nicht vorausgesetzt, es erfolgt eine kurze Einführung in die Programmiersprache und die funktionale Programmierung mit Scala.

Für wen ist dieses Buch geeignet?

Das Buch richtet sich an alle, die sich für die Webentwicklung mit Scala und Play interessieren. Es sollte grundlegende Erfahrung in einer beliebigen Programmiersprache sowie Kenntnis von Webtechnologien vorhanden sein.

Welche Versionen werden genutzt?

Der Quelltext nutzt Scala 2.12, Play 2.6, Silhouette 5.0, Scala.js 0.6 sowie Cats 1.x. Ansonsten wird soweit möglich die jeweils aktuellste Version verwendeter Bibiliotheken genutzt.

Wo liegt der Code?

Das Repository mit dem Code zum Buch liegt in einem öffentlichen Repository bei GitLab: https://gitlab.com/comeoutandplay/code

Sonstiges

Wir haben ein Diskussionsforum zum Buch, das direkt bei Leanpub liegt: https://community.leanpub.com/c/comeoutandplay

Über die Autoren

Jens Grassel
Jens Grassel

Jens Grassel is the CTO and founder of Wegtam, a company specialised in data integration and search technology. He is programming in a plethora of languages and engineering software systems since the fall of the Wall. For some years now his focus has shifted to functional programming languages.

He has contributed to numerous open source projects and likes to apply open source technologies wherever applicable.

Andre Schütz
Andre Schütz

Andre Schütz is the COO and founder of Wegtam, a software company specialised in products for data integration, interface management and search technology. He constructs and develops software systems in various programming languages - the focus on functional programming concepts.

Another main work is the creation of articles in the field of focusing and creativity, good sleep and a healthy mindset on the website mindcombo.de.

Furthermore, he creates web comics and children's books.

Table of Contents

  •  
    • Vorwort
      • Einleitung
      • Aufbau des Buchs
        • Konventionen für den Quelltext
      • Schutzmarken und Copyrights
      • Logos und Bilder
      • Quelltext zum Buch
  • Einrichtung der Werkzeuge und Einführung in Scala
    • 1 Werkzeuge
      • 1.1 Java
      • 1.2 SBT
        • 1.2.1 Installation
        • 1.2.2 Nützliches für SBT
      • 1.3 Entwicklungsumgebung
    • 2 Programmierung in Scala
      • 2.1 Interaktive Programmierung via REPL
      • 2.2 Hinweise zu Datenstrukturen (var, val)
      • 2.3 Schnelleinstieg in die funktionale Programmierung
        • 2.3.1 Auswertungsstrategien (evaluation strategies)
        • 2.3.2 Scopes und Blöcke
        • 2.3.3 Semikolons und Infix-Operatoren
        • 2.3.4 Tail-Rekursion
        • 2.3.5 Funktionen höherer Ordnung (Higher Order Functions)
        • 2.3.6 Currying
        • 2.3.7 Polymorphismus
        • 2.3.8 Pattern-Matching
        • 2.3.9 Implizite Parameter
      • 2.4 Hilfsmittel zur Unterstützung
      • 2.5 Reduzierung von “Boilerplate” Code
  • Grundlagen zu verwendeten Technologien
    • 3 Play Framework
      • 3.1 Erstellen einer Play Anwendung
        • 3.1.1 Play Anwendung über Schablonen erstellen
        • 3.1.2 Play Anwendung von Hand erstellen
      • 3.2 Projektstruktur
        • 3.2.1 Verzeichnisstruktur, SBT-Einstellungen und Abhängigkeiten
        • 3.2.2 Unterprojekte
      • 3.3 Requests, Routing und Controller
        • 3.3.1 Requests
        • 3.3.2 Routing
        • 3.3.3 Controller
      • 3.4 Templates (Twirl)
        • 3.4.1 Wiederverwendung von Templates
      • 3.5 Mehrsprachigkeit (Internationalization)
        • 3.5.1 Messages Objekt
      • 3.6 Formulare
        • 3.6.1 Formdefinition
        • 3.6.2 Form-Objekte und ihre Typen
        • 3.6.3 Formbeispiele
        • 3.6.4 Formverarbeitung in einer Action
        • 3.6.5 Formdarstellung in Template View
        • 3.6.6 Erweitertes Formbeispiel mit sich wiederholenden Elementen
      • 3.7 Datenbankkonfiguration
        • 3.7.1 Konfiguration von Slick für Play
      • 3.8 Datenbankzugriff
      • 3.9 Asynchrone Programmierung mit Play
        • 3.9.1 Websockets
      • 3.10 Webservices
      • 3.11 Migration von Play 2.5.x auf 2.6.x
        • 3.11.1 Was hat sich geändert
        • 3.11.2 SBT 0.13.15 erforderlich
        • 3.11.3 Guice und OpenId Unterstützung wurden in separate Modul verlagert
        • 3.11.4 Bereitstellung neuer Controller Klassen
        • 3.11.5 Assets
        • 3.11.6 Play WS
        • 3.11.7 Anpassungen bei i18n
        • 3.11.8 Cache
        • 3.11.9 Veränderungen an der Scala Configuration API
        • 3.11.10 Entfernung diverser APIs und Bibliotheken
        • 3.11.11 play.api.libs.concurrent.Execution ist nun veraltet
        • 3.11.12 Neue Standardfilter
      • 3.12 Konfiguration von Ehcache
      • 3.13 Ausführen mit IntelliJ IDEA und Debuggen
    • 4 Akka
      • 4.1 Einrichten einer Akka Anwendung
      • 4.2 Akka Grundlagen
        • 4.2.1 Aktorsystem und Aktoren
        • 4.2.2 Supervision
        • 4.2.3 Aktorreferenzen
        • 4.2.4 Nachrichten und deren Auslieferung
        • 4.2.5 Konfiguration
      • 4.3 Aktoren
        • 4.3.1 DeathWatch
        • 4.3.2 Nachrichten
        • 4.3.3 Aktoren beenden
        • 4.3.4 FSM
        • 4.3.5 Persistenz
        • 4.3.6 Tests
      • 4.4 Aktorenhilfsmittel
        • 4.4.1 Event-Bus
        • 4.4.2 Logging
        • 4.4.3 Scheduler
        • 4.4.4 Zeitdauer (Duration)
        • 4.4.5 Unterbrecher (Circuit Breaker)
      • 4.5 Streams
    • 5 Scala.js
      • 5.1 Erstellen einer Scala.js Anwendung
      • 5.2 Abhängigkeiten
      • 5.3 Module exportieren
      • 5.4 Cross-Compile
      • 5.5 Testen
  • Anwendungsszenario
    • 6 Das Frontend
    • 7 Das Online-Spiel
  • Das Frontend
    • 8 Erstellung und Konfiguration einer Basis-Play-Anwendung
    • 9 Einbindung von Silhouette als Authentifizierungs-Framework
    • 10 Anmeldung der Nutzer am System
      • 10.1 Konfiguration des Backend Store (PostgreSQL)
      • 10.2 Definition des Nutzermodells
      • 10.3 Erstellen einer Datenbank-Evolution
      • 10.4 Tabellendefinition innerhalb der Anwendung
      • 10.5 DAOs für den Zugriff auf die Nutzerdaten
      • 10.6 Silhouette Konfiguration auf eigene DAOs umstellen
      • 10.7 Konfiguration der Social-Dienste
      • 10.8 Funktionalität für das Löschen eines Accounts
    • 11 Suchen und Verwalten von Freunden
      • 11.1 Erweiterung des Nutzermodells um einen Nutzernamen
      • 11.2 Registrierung der Nutzer mit Nutzernamen und E-Mail
      • 11.3 Evolution und Tabellendefinitionen für Freundeslisten
      • 11.4 Funktionalitäten für Freundeslisten in einem DAO
      • 11.5 Erstellen von WebSockets zur dynamischen Interaktion
        • 11.5.1 Erstellen des WebSocket auf Basis eines Actors
        • 11.5.2 Controller als Endpunkt für die Erstellung des WebSocket
        • 11.5.3 Verbinden der Action innerhalb des Routing
        • 11.5.4 Erstellen von Funktionen innerhalb des Javascript, welche mit dem WebSocket zusammen arbeiten
      • 11.6 Erweiterung des CSR für WebSockets
      • 11.7 Visualisierung der Freundeslisten
      • 11.8 Erweiterung der Views zur Übergabe spezifischer Skripte und CSS Dateien
    • 12 Migration auf Play 2.6.x und Silhouette 5
      • 12.1 Upgrade der benötigten Abhängigkeiten
      • 12.2 Anpassungen für das Upgrade von Silhouette
      • 12.3 Änderungen im CustomPostgresDriver
      • 12.4 Neue Controller Klassen
      • 12.5 Von WebJarAssets zu AssetsFinder
      • 12.6 Anpassungen für die Änderungen in i18n
      • 12.7 Impliziter ExecutionContext
      • 12.8 Code Refactoring diverser Compiler Warnungen
  • Das Spiel
    • 13 Regeln und Spielverlauf
    • 14 Umsetzung
      • 14.1 Grundlegende Datentypen
      • 14.2 Operationen auf einem Spielstand
      • 14.3 Operationen auf einem Spielfeld
      • 14.4 Nutzung von Eq (Cats)
      • 14.5 Datenbank (Repository)
      • 14.6 Zeichnen von Spielfeldern im Client
      • 14.7 Hilfsfunktionen
        • 14.7.1 Websocket-URL berechnen
        • 14.7.2 Feldgröße zum Zeichnen berechnen
        • 14.7.3 Berechnen der Klickposition in einem Spielfeld
        • 14.7.4 Logging
      • 14.8 Spielvorbereitung (Preparation)
        • 14.8.1 Globale Variablen
        • 14.8.2 Struktur der HTML-Datei
        • 14.8.3 Funktionen
        • 14.8.4 Websocket
        • 14.8.5 Aufruf und Initialisierung
      • 14.9 Spielablauf (Game)
        • 14.9.1 Globale Variablen
        • 14.9.2 Struktur der HTML-Datei
        • 14.9.3 Funktionen
        • 14.9.4 Websocket
        • 14.9.5 Aufruf und Initialisierung
    • 15 Integration ins Frontend
      • 15.1 Verzeichnisstruktur
        • 15.1.1 Aktoren, Controller, DAO und Modelle
        • 15.1.2 View-Templates
      • 15.2 Datenbankschicht (Repository) als DAO
      • 15.3 Websocket
        • 15.3.1 Eine Websocket-Algebra
        • 15.3.2 Komposition zum fertigen Websocket
      • 15.4 Controller und Routing
        • 15.4.1 Übersichtsseite
        • 15.4.2 Spielerstellung
        • 15.4.3 Löschen eines Spielstandes
        • 15.4.4 Dem Spiel beitreten
        • 15.4.5 Das Spiel
        • 15.4.6 Spielvorbereitung
        • 15.4.7 Websocket
      • 15.5 Views
  • Deployment
    • 16 Konfiguration für den Produktivbetrieb
    • 17 Erstellen eines Artifakt mit allen Abhängigkeiten
    • 18 Erstellen von Debian Packages mit SBT Native Packager
    • 19 Deployment zu einem Cloud Service
      • 19.1 Deployment via Remote Repository
      • 19.2 Deployment mittels sbt-heroku Plugin
  • Erkenntnisse
    • 20 Silhouette
      • 20.1 Abhängigkeiten von anderen Bibliotheken
      • 20.2 Aufwand durch Änderungen der Authentifizierung
    • 21 Circe
      • 21.1 Kompiliergeschwindigkeit
      • 21.2 Fehlerhäufigkeit
    • WTFM - Write that fucking manual!
  • Anmerkungen

Die bedingungslose Leanpub, Kein Risiko, 100% zufrieden Garantie

Innerhalb von 45 Tagen ab Kauf kannst du dein Geld zu 100% zurückverlangen, bei jedem Leanpub-Kauf, in nur zwei Klicks. Wir bearbeiten die Erstattungen manuell, daher dauert es ein paar Tage, bis der Betrag ankommt.
Lese die kompletten Bedingungen.

Schreiben und veröffentlichen mit Leanpub

Autoren und Verlage nutzen Leanpub, um erstaunliche Fortschritte zu veröffentlichen und ebooks zu vervollständigen. Sie können Leanpub auch schreiben, veröffentlichen und verkaufen! Leanpub ist eine leistungsstarke Plattform für ernsthafte Autoren und kombiniert einen einfachen, eleganten Schreib- und Publishing-Workflow mit einem Laden, der sich auf den Verkauf von ebooks konzentriert. Leanpub ist eine magische Schreibmaschine für Autoren: Schreiben Sie einfach in Klartext, und um Ihr ebook zu veröffentlichen, klicken Sie einfach auf eine Schaltfläche. Es ist wirklich so einfach.

Erfahren Sie mehr über das Schreiben mit Leanpub