10.05.2021 - 30.07.2021
- Grundlagen: HTML, CSS, JavaScript, TypeScript
- Frontendentwicklungsframeworks: VueJS, Angular
- Backend Laufzeitumgebungen: NodeJS, Deno
- Backendentwicklungsframeworks wie NestJS
- Testframeworks: z.B. CodeceptJS and their usage for Web Harvesting / Web Crawling
- Chat Bot Integrationen: Telegram, Slack, Discord, Reddit, Twitter
- Smart Contract Development: Ethereum Blockchain + Binance Smartchain
Kann grundsätzlich von den Studierenden kommen solange die o.g. Technologien und die von Herrn Pagnia (Verteilte Systeme) gewünschten Schwerpunkte erkundet werden können.
Siehe Issues Tab...
- Chat Bots
- Blockchains / DLT / Smart Contract Development
- Progressive Web Apps
- Web Harvesting / Web Crawling (e.g. to solve the chicken and egg problem)
- Natural Language Processing (NLP)
- Machine Learning (Basics)
https://t.me/joinchat/ZMUpP9w5V0IzNDky
- https://code.visualstudio.com/insiders/
- https://github.com account
- https://telegram.org
- https://brave.com
- https://nodejs.org/en/ (recommended version)
- https://deno.land/
- Investiere ein paar Stunden in freies Experimentieren bei w3 schools
- Ziehe Dir dieses Video rein
- Experimentiere mit NodeJS und Deno
- Stelle Fragen per Telegram Channel oder per stackoverflow - auch wenn die Fragen vielleicht "dumm" erscheinen.
- Sicherstellen, dass jeder nachvollziehen kann was das folgende Programm tut. https://github.com/michael-spengler/wwi19seb-webprogrammierung/blob/main/example-application/backend/example-deno-server.ts
1.1. Mietwagenanbieter + Hotelzimmeranbieter Der Request geht an den Coordinator
-
Sicherstellen, dass Deno bei jedem funktioniert
-
die erste angular app entwickeln
3.1 https://angular.io/guide/setup-local 3.2 Sicherstellen, dass dies bei jedem funktioniert -
Invitation based Authentication vorstellen
-
Web Harvesting erläutern
Solving the Chicken And Egg Challenge --> getting content into your application
E.g. content which comes from fb groups (https://www.facebook.com/groups/196177820486972/events)
5.1 https://codecept.io/quickstart/ -
Image Recognition erläutern Could also be used in the context of solving the chicken and egg problem (5)
- Sicherstellen, dass das vue cli bei jedem installiert werden konnte und funktioniert
npm install -g @vue/cli
- Die erste vuejs app entwickeln
npm init vite-app example-vue-app
-
Ein Frontend Beispiel für das Verteilte Systeme Szenario entwerfen User Story As a traveler I want to book a flight and a hotel room in order to enjoy a relaxed vacation If the booking of the hotel room goes wrong also the booking of the flight shall be cancelled and vice versa. We will use a REST API
-
GitHub Actions & GitHub Pages based Deployment vorstellen - siehe FFC
-
Chatbot im Kontext der FFC vorstellen
Entscheidung Es steht jedem frei ob er sich bei mir auf das "VS Frontend fokussiert" oder zu einem "freestyle projekt" beiträgt oder zu beiden.
Bei den freestyle projekten könnt ihr gerne sehr triviale backend implementierungen (z.B. keine Datenbank, keine Normalisiert bzgl. Datenmodell). Ihr könnt sogar eine Client Only App entwickelnt - siehe z.B. Fancy Flashcards Classic.
Qualitätsmerkmale auf welche ich jedoch immer wert lege sind:
- High separation of concerns
- TypeSafety
- High Cohesion und Loose Coupling (interfaces)
Wir brauchen die Endpoints + die zu erwartenden Daten
-
Das Angular basierte Beispielfrontend an eines der Two-Phase-Commit Backends anbinden.
-
Svelte vorstellen und grob mit angular, react und vue vergleichen
-
Snel vorstellen und eine example-svelte-app erstellen
snel create example-svelte-app
-
Typische Technologieentscheidungen in der Web Entwicklung 4.1. Welches Frontend (wie soll der User mit meiner Web App interagieren? e.g. Browser, Telegram Chatbot, ...) 4.2. Brauche ich ein Backend? Wenn ja: Welche Laufzeitumgebung soll das Backend nutzen? 4.3. Brauche ich eine Persistenz für Anwendungsdaten? Wenn ja: Brauche ich eine Datenbank?
-
Die Inhalte der vorangegangenen Vorlesungen grob wiederholen
Feedback an Spengler: Grundsätzlich ist es gut vieles Innovatives kennenzulernen - gleichzeitig wäre es wertvoll etwas tiefer in ausgewählte Technologien einzutauchen!!
Umfrage Ergebnis: Ausgewählte Deep Dives Umfrage Ergebnis Deep Dives: Angular (18) / React (7) / Deno (2) / Svelte (1)
Exkurs: Argumente aus der Crowd für React Gut angefühlt (evtl. einfach weil wir tief drin waren) Auszug aus einem Video zum Thema angular vs. react: https://youtu.be/khhRY2vZGKs?t=273
Investiere in Technologien, die mit einer hohen Wahrscheinlichkeit eine long term mainstream adoption erreichen und bei denen "design for flexibility" built in ist. ... Weil dadurch das gesamte Wertschöpfungspotential m.E. maximal ist --> Invest in non-proprietary technologies.
-
Deep Dive Angular Parent - Child Components + Component Interaction Angular - Logarithmische Lernkurve
-
Zeit für Gruppenarbeiten an FreeStyle Projekten und an den Two-Phase-Commit showcases
-
TSLint / static code checks automation... Potential TSLINT Template Potential automation support by adding commit hooks via husky
-
Trading Bots (why manual trading seems not recommendable) Beispiel für Sentiment Analyse --> Ergebnisse
Beispiel für Technische Analyse --> Ergebnisse
Beispiel für Fundamental Analyse (tbd) Warren Buffet - was ist die Value Proposition? Wie ist das Timing von Meilensteinen... Beispiel für Insider Trading (tbd) XRP + ICP Beispiel für Marktmanipulation (tbd) Die Manipulationsmasse ist in einem passenden Verhältnis zum Hebelwirkungsinstrument zu gestalten.
Don't let FUD and FOMO guide you individually.
Fee Schedule Binance Futures,
-
Chatbots Beispiel Implementierungen siehe DHBW Learning Apps
-
Further Deep Dives into the Angular world Lifecycle Hooks
-
Show one possibility for Component Interaction in Svelte Beispiele siehe DHBW Chatbot
-
Hinweis: Wenn möglich weitgehen "mobile first" entwickeln. Hintergrund: Es ist einfacher den Content auf einem großen Screen darzustellen - es kann dann allerdings sehr schwierig werden das "runterzudampfen". Etc....
- Angular Deep Dive --> Angular Material / Bootstrap Grid (responsiveness)
- Analyse the angular based Dance Planner Frontend
- Develop a lightweight svelte based alternative
- Deploy this lightweight alternative via GitHub Pages
- Try to provide such a thing completely without a dedicated backend - fetch the data from the raw jsons on github instead...
- Try the forms in issues based approach for event creation...
- Zeit für die Gruppenarbeiten
- Exkurs zum Thema Sentiment Analyse --> Sentiment Dashboard
- Exkurs UI Mockup Creation Tool - z.B. https://balsamiq.cloud/#
- prepare the frontend for the two phase commit
- Bewertungskriterien
1.1. Anwendung funktioniert
1.2. Code Qualität (High Cohesion / Loose Coupling (im Backend: Jede public methode als Interface Methode definieren) / Separation of Concerns (no spaghetti code))
1.3. Dokumentation / Readme
1.4. Goodies: Demo Video, Unit Tests (für viele ein must have)
1.5. Viele technologische Skills genutzt
1.6. Exkurse: Test Double Patterns - (Check oder) Zusammenstöpseln der 2 phase commit Geschichte --> Hier sollten wir den Backend Call implementieren
2.1 Mit standard post route 2.2 Mit socket connection - Test via: https://michael-spengler.github.io/wwi19seb-webprogrammierung/
- Erste Gruppen Zwischen Präsentationen mit konkretem Punktefeedback
- Update aus dem Crypto Bereich
- Bedarfsorientierte Deep Dives
- Zeit für die Gruppenarbeiten
- Kostenlose https Zertifikate gibt's entweder via GitHub Pages based page provisioning oder per certbot
- Client Side Password Hashing
- CORS Cross Origin Ressource Sharing
- Binance Smart Chain & Ethereum Blockchain
- Gruppenzwischendemos
- angular deep dive - post requests...
- spontan
- Gruppenpräsentationen
- PA2 Anmeldungen finalisieren
- Optional: Vorbereitung mündl. PA2 Prüfung
3.1. Was ist der Unterschied zwischen kompilieren und transpilieren?
3.2. ISO / OSI 7 Schichten Modell
3.3. Wozu gibt es Normalisierung im Kontext der Datenmodellierung?
3.4. Welche Frontend Entwicklungsframeworks kennen Sie?
3.5. Welche Laufzeitumgebungen kennen Sie? Z.B. NodeJS, Deno....
3.6. Wonach ist die Aktiv Seite der Bilanz gegliedert?
3.7. Wonach ist die Passiv Seite der Bilanz gegliedert?
...