Skip to content

Bootcamp TaleTime 2.0

Alexander Stolz edited this page Feb 19, 2022 · 2 revisions

Willkommen 👋

Willkommen im TaleTime Projekt. Jedes der folgende Kapitel wird auf Grundlagen eingehen, welche für die Arbeit bei TaleTime nötig sind. Das Ziel ist es euch innerhalb von 2 Wochen auf einen guten Basis-Wissensstand zu bringen.

Wie dieser Guide funktioniert

Dieser Guide ist kein eigenes Tutorial. Stattdessen soll er als Startpunkt dienen, um euch zu den passenden Quellen und Tutorials im Internet zu leiten. Denn wie es Andy Hunt und Dave Thomas schon formuliert haben - Dont Repeat yourself (DRY). Wir leiten euch zu den passenden Quellen, welch einen Einstieg in die TaleTime Technologien bieten. Aber wir setzen nichts erneut um, was es so schon in besser im Internet gibt.

In diesem Guide werden die besten Inhalte aus dem Internet zum Erlernen eines bestimmten Themas zusammengetragen. In jeder Lektion führen wir in das Thema ein und versuchen, nützliche Zusammenhänge zu vermitteln, bevor wir euch auf externe Ressourcen verweisen, die von anderen erstellt wurden.

Git

Git ist wie eine ultimative Speichertaste für eure Dateien und Verzeichnisse. Offiziell handelt es sich bei Git um ein Versionskontrollsystem.

Beim Speichern in einem Texteditor werden alle Wörter eines Dokuments in einer einzigen Datei gespeichert. Ihr erhaltet immer nur einen Datensatz der Datei, z. B. essay.doc, es sei denn, Sie erstellen doppelte Kopien (was schwierig ist, sich daran zu erinnern und den Überblick zu behalten):

essay-draft1.doc, essay-draft2.doc, essay-final.doc

Beim Speichern in Git werden jedoch die Unterschiede in den Dateien und Ordnern aufgezeichnet UND ein historischer Datensatz für jede Speicherung geführt.

Diese Funktion ist ein entscheidender Vorteil. Als einzelner Entwickler kannst du mit Git überprüfen, wie dein Projekt wächst, und den Dateistatus aus der Vergangenheit leicht einsehen oder wiederherstellen.

Sobald Git mit einem Netzwerk verbunden ist, kannst du dein Projekt auf GitHub oder andere Alternativen wie Bitbucket, Beanstalk und andere übertragen: Bitbucket, Beanstalk oder GitLab, um es mit anderen Entwicklern zu teilen und zusammenzuarbeiten.

Während Git auf deinem lokalen Rechner arbeitet, ist GitHub ein Fernspeicher im Internet für alle deine Programmierprojekte.

Assignment

Agile Basics

Für das TaleTime Projekt setzen wir auf das Kanban Vorgehensmodell.

Github stellt uns Funktionen zur Verfügung, welche uns bei der Arbeit mit Kanban helfen.

  • Lest euch hier durch, wie das Kanban Vorgehensmodell grundsätzlich funktioniert.
  • Schaut euch dieses Video zu Kanban mit Github an.
  • Zu Github Pull-Requests findet ihr hier einen Guide.

Text-Editors

Man kann sich Code-Editoren als spezialisierte Entwicklungswerkzeuge vorstellen. Sie sind in hohem Maße anpassbar und bieten viele Funktionen, die Ihnen das Leben leichter machen.

Es gibt nichts Schlimmeres, als 2 Stunden damit zu verbringen, herauszufinden, warum dein Programm nicht funktioniert, nur um festzustellen, dass man eine schließende Klammer übersehen hat. Plugins, Syntaxhervorhebung, automatisches Schließen von Klammern und Linting sind nur einige der Vorteile eines Code-Editors. Es gibt viele Texteditoren zur Auswahl, aber wir empfehlen, mit VSCode zu beginnen.

VSCode ist ein hervorragender kostenloser Code-Editor. Er hat eine hervorragende Add-on-Unterstützung und eine großartige Git-Integration.

Assignment

Flutter

Flutter ist ein Open-Source-Framework von Google zur Erstellung von schönen, nativ kompilierten, plattformübergreifenden Anwendungen aus einer einzigen Codebasis.

Das heißt, ihr könnt eine Anwendung ein Mal entwickelt und sie läuft auf mehreren Plattformen.

Für Flutter sind das iOS, Android, Web, MacOS, Windows und sogar Embedded Systeme.

Warum Flutter?

Der entscheidende Vorteil von Flutter ist, die eigene Rendering Engine. Vergleichbare Technologien wie Ionic erreichen die Cross-Plattform Funktionalität dadurch, dass sie eine Website rendern. Diese wird dann so gestyled, dass sie aussieht wie eine iOS oder Android Anwendung. Tatsächlich bedient ihr allerdings einen Browser. Das führt zu Performance Einbußen. Die App fühlt sich nicht mehr native an.

React Native ist ebenfalls ein Framework zur Entwicklung von Cross-Plattform Apps. Wie der Name bereits andeutet entwickelt ihr hier in JavaScript mit dem React Framework. React Native mapped dabei React Komponenten zu nativen Platform Elementen. Ein React Native Button sagt also dem nativen System, dass es den Android oder iOS Button zeichnen soll. Die Kommunikation findet hier über eine sogenannte Bridge statt. Die Bridge führt allerdings auch zu Performance Einbußen. Außerdem muss die Bridge regelmäßig an neue iOS oder Android Versionen angepasst werden.

Flutter umgeht diese Probleme mit der eigenen Rendering Engine Skia. Das native System stellt praktisch eine Box dar, in welche Skia die Buttons, Text-Felder, Bilder usw. rein rendert. Dies bringt uns folgende Vorteile:

  • Praktisch native Performance, da wir nicht auf native System-Elemente angewiesen sind. Wir müssen mit keiner dritten Komponente kommunizieren. Sei es das native System oder der Browser.
  • Wir sind auch zu großen Teilen unabhängig von neues iOS oder Android Version. Da wir keine nativen Elemente ansteuern, sind wir unabhängig darin was wir mit Skia rendern.

Ein weiterer Vorteil von Flutter für TaleTime ist, dass Flutter bereits mit einer großen Menge von fertigen UI-Elementen ausgeliefert wird. Die Dokumentation von Flutter selbst hat daher schon praktisch alle Infos die ihr brauchen werdet um mit Flutter zu arbeiten.

Flutter nutzt die Programmiersprache Dart. Lasst euch davon allerdings nicht abschrecken. Dart ist genauso wie Java eine objekt-orientierte Programmiersprache und nutzt daher die selben Konzepte. Auch die Syntax ist sehr ähnlich.

Assignment

Flutter State Management

Neben den Flutter Basics ist auch das Thema State Management zentral um an TaleTime zu arbeiten. Der Begriff State Management ist stark überladen und meint oft verschiedene Dinge.

Eine Definition ist:

Das Verhalten einer Anwendung zu einem bestimmten Zeitpunkt.

Sobald der Nutzer mit unserer Anwendung interagiert, kann sich diese in unterschiedlichen Zuständen befinden. Zum Beispiel könnte unsere Anwendung eine Suche zur Verfügung stellen. Je nachdem ob der Nutzer einen Text eingegeben hat, oder nicht, sollte unsere Anwendung passend reagieren. Die Eingabe des Nutzers wäre hier unser aktueller State. Und in unserem Code müssen wir diesen State verwalten, an den passenden Stellen zur Verfügung stellen und möglicherweise modifizieren.

Für die Lösung dieses Problems gibt es verschiedenste Lösungswege. Flutter wird bereits mit einigen Lösungen ausgeliefert. Hierzu zählen Stateful Widgets oder ValueNotifier.

Die Community rund um Flutter hat allerdings auch einige sehr gute Packages entwickelt. Hierzu zählen das Provider Package und die Bloc Library. Letztere nutzen wir im Rahmen von TaleTime.

Assignment

Clone this wiki locally