<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Lukas Ganster - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it211502/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it211502/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Thu, 26 Jan 2023 09:30:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Lukas Ganster - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it211502/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Jukebox.party &#8211; App für gemeinsames Musikhören</title>
		<link>https://mobile.fhstp.ac.at/allgemein/jukebox/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Thu, 26 Jan 2023 09:29:13 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[jukebox]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[next]]></category>
		<category><![CDATA[pwa]]></category>
		<category><![CDATA[spotify]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10640</guid>

					<description><![CDATA[<p>Jukebox.party ist eine Cross-Plattform-Applikation, die in Verbindung mit Spotify gemeinsames Musikhören bei Party ermöglicht und wurde von Studierenden der Masterklasse Mobile entwickelt.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/jukebox/">Jukebox.party &#8211; App für gemeinsames Musikhören</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>Im Rahmen des Semesterprojektes (WS22) der Masterklasse Mobile wurde von den Studierenden Eva Altenburger, Ramon Brullo, Lukas Ganster, Fabian Gaugusch, Michelle Markl, Lisa Polena und Alex Schuster die Idee einer App für kollektives Musikhören bei Partys konzipiert und implementiert. Dieser Artikel wurde gemeinsam verfasst und stellt kurz und bündig den Projektumfang sowie die wichtigsten Eckdaten dar.</p>



<h2 class="wp-block-heading">Einleitung</h2>



<p>Jeder und jede weiß, dass bei einer erfolgreichen Party die passende Musik nicht fehlen darf und ein populärer Weg, um für gute Laune zu sorgen, ist eine Spotify-Playlist laufen zu haben. Mit der Spotify App kann aber nur immer eine Person die Hände am Steuer haben und die anderen Gäste können bei der Musikwahl nicht mitmischen. Um dieses Problem zu lösen, haben wir dieses Semester jukebox.party entwickelt.jukebox.party ist eine Web-App, die auch, und sogar spezifisch, für mobile Geräte optimiert ist, mit der eine Spotify-Session interaktiv von den Gästen einer Party gemanagt werden kann. Dabei braucht nur eine Person einen Premium Spotify-Account und ein Gerät für die Wiedergabe, damit die Party starten kann. Zugänglich ist die Developer-Version der App auf<a href="https://jukebox.herokuapp.com"> https://jukebox.herokuapp.com</a>.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1179" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/01/IMG_7720-1179x800.jpg" alt="" class="wp-image-10645" /><figcaption>Jukebox im Kino der FH St.Pölten</figcaption></figure>



<h2 class="wp-block-heading">Featureumfang</h2>



<p>Der Ablauf einer Party mit jukebox.party beginnt mit einer Person, die einen Premium Spotify-Account hat und die Party erstellt. Es wird ähnlich wie bei Kahoot ein eindeutiger Code generiert, über den andere Nutzer der Party durch eintippen oder einen QR-Code beitreten können.</p>



<p>In der Party kann man sehen, was gerade gespielt wird und welche Lieder als nächstes kommen. Auch Lyrics zum aktuellen Track kann man sich ansehen, falls man mitsingen will. Auch kann man das aktuelle Lied bewerten und sehen, welche Stimmen andere Party-gäste abgegeben haben. Diese Bewertungen sind in der History sichtbar, in der die bereits gespielten Tracks und deren Beliebtheit aufgelistet sind.</p>



<p>Als Host der Party hat man auch die Möglichkeit, das aktuelle Lied zu überspringen oder zu einem vorherigen zurückzukehren. Außerdem hat man die Berechtigung, Gäste aus der Party zu entfernen.</p>



<p>Das wichtigste Feature von jukebox.party ist jedoch das Mitbestimmen bei der Wahl der nächsten Tracks. Mithilfe einer Suchfunktion kann man seine Lieblingslieder finden und der Playlist hinzufügen. Falls man sich nicht sicher ist, kann man sich auch mit Vorschlägen, basierend auf den zuletzt gespielten Tracks, inspirieren lassen.</p>



<h2 class="wp-block-heading">Technische Umsetzung</h2>



<p>Bei der Applikation jukebox.party handelt es sich um ein Next.js-Projekt. Next.js ist ein Javascript Framework, das es ermöglicht, auf React basierende serverseitig gerenderte Webapplikationen zu erstellen. Wir haben uns für das Framework entschieden, da es nahe unseren persönlichen Skills und Interessen liegt und in einem Paket sowohl die Front-End- als auch die Back-End-Entwicklung vereint. Praktisch bedeutet das, dass das Front-End mit dem Javascript-Framework React geschrieben wird und gleichzeitig die Möglichkeit besteht, Javascript für die Server-Logik zu verwenden.</p>



<p>Als Datenbank wurde das von Google entwickelte Tool Firebase verwendet, da es neben der dokumenten-basierten einfachen Struktur auch die Möglichkeit für Echtzeitupdates bietet. Das bedeutet, dass mehrere Clients auf einen Datensatz, in unserem Fall eine Party, zugreifen und jegliche Änderungen dieser Party sofort an alle Clients übertragen werden.</p>



<p>Abgesehen von den gewählten Technologien basiert der Großteil der Funktionalitäten auf der von Spotify angebotenen Web-API. Diese bietet Entwickler:innen ein Reihe an verschiedenen Schnittstellen, die meist auch so in der bekannten Spotify-App zu finden sind. Speziell haben wir uns auf die “Queue”-basierten Schnittstellen fokussiert, da sich hier der meiste Content der Applikation abspielt.</p>



<p>Weiters wurden die meisten Komponenten und Backend-Schnittstellen auch Unit-tested. Dafür wurde die populäre Javascript Testing Library “Jest” verwendet. Auch eine CI-CD-Pipeline zur Versicherung eines robusten Deployment-Flows wurde mithilfe von &#8220;CircleCi&#8221; umgesetzt.</p>



<h2 class="wp-block-heading">Herausforderungen bei der Entwicklung</h2>



<p>Im Großen und Ganzen haben wir als Team sehr gut kommuniziert und funktioniert, sodass die Schwierigkeiten und Herausforderungen bei der Entwicklung minimal geblieben sind. Die erste und vielleicht größte Herausforderung war, dass die Spotify API nicht alle Funktionen zur Verfügung stellt, die wir gebraucht hätten. Am Anfang des Projektes hatten wir die Version, dass der Host der Party die Reihenfolge der Queue ändern und Lieder aus dieser entfernen kann. Allerdings hat uns da die API einen Strich durch die Rechnung gemacht, da sie leider diese Endpoints nicht anbietet. Somit mussten wir unser MVP überdenken und diskutieren, wie wir weiter vorgehen. Wir haben uns entschieden, diese Funktionen bei der ersten Version wegzulassen und wenn noch Zeit bleibt bzw. im weiteren Schritt die Queue bei uns zu hosten, damit wir die Funktionen einbauen können und Spotify immer nur den nächsten Track der Queue bekommt.&nbsp;</p>



<p>Eine weitere Herausforderung für uns alle waren die neuen Technologien, die wir eingesetzt haben. Das Team hatte mit den Technologien vor diesem Projekt wenig bis keine Vorerfahrung und musste so in kurzer Zeit diese lernen. Hierbei handelt es sich besonders um NextJS, Next-Auth und Firebase. Zusätzlich kam die Herausforderung dazu, dass die neue Version von NextJS wenige Tage vor dem Beginn des Projektes erschienen ist und wir uns dazu entschlossen haben, mit der neuesten Version zu arbeiten. Allerdings unterscheidet sich diese, in ein paar Aspekten, stark von der Vorherigen und die Dokumentation war noch nicht so gut, zumal Version 13 erst ein paar Tage alt war.&nbsp;</p>



<p>Andere kleinere Herausforderungen waren zum Beispiel, dass die Projektstruktur sich am Anfang stark verändert hat und die Entwickler/Entwicklerinnen sich erst wieder zurechtfinden müssen, bevor mit dem Task weitergemacht werden konnte. Zusätzlich war es eine kleine Herausforderung, sich in den Code wieder einzulesen und die eigenen Funktionen wiederzufinden, nachdem der Code ein Refactoring bekommen hat. Allerdings sind wir für das Engagement unseres Teamkollegen sehr dankbar und haben dadurch auch einiges Neues gelernt.</p>



<h2 class="wp-block-heading">Umsetzung mittels agilem Projektmanagement</h2>



<p>Für die Umsetzung von Jukebox.party wurde ein agiler Ansatz ganz nach den Grundprinzipien des Scrum-Framework gewählt. Gearbeitet wurde mit dem Atlassian Tool Jira, welches sich im Bereich der Softwareentwicklung mittlerweile als Industriestandard durchgesetzt hat. Die verfügbare Arbeitszeit des Semesters wurde von Anfang November 2022 bis zur Projektevernissage im Jänner 2023 in insgesamt 6 Sprints aufgeteilt, wobei die jeweilige Sprintdauer variabel war.</p>



<p>Zum Ende eines Sprints gab es immer ein kurzes Sprint Review bzw. Sprint Planning für die nächsten Arbeitspakete in der jeweiligen Einheit der Masterklasse Mobile. Anfangs hatten wir uns auch um die Durchführung von Scrum spezifischen Techniken und Methoden wie Planning Poker oder dem exakten Definieren von User Stories bzw. Akzeptanzkriterien bemüht, merkten aber schnell, dass es für unser Teamaufstellung und unser Setting der geeignetere Modus Operandi wäre, die Arbeitspakete immer beim Planning vorab kurz zu definieren und dann auch frei aus dem Sprint-Backlog weg abzuarbeiten.</p>



<h2 class="wp-block-heading">Präsentation bei der Projektevernissage</h2>



<p>Bei unserem Stand für die Projektevernissage haben wir uns auf das Wesentliche konzentriert. Auf dem Haupttisch haben wir ein iPad ausgestellt, auf dem eine Party erstellt wurde. Abgespielt wurden die Songs über einen kleinen Lautsprecher. Daneben gab es auch ein iPhone, das als Gast bei der Party angemeldet war. So konnten wir den Besuchern beide Varianten zeigen. Natürlich konnten sie auch einfach selbst in die Party einsteigen und einen Song zur Warteschlange hinzufügen.&nbsp;</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1536" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/01/8B8A5532-1536x1024-1-1536x800.jpg" alt="" class="wp-image-10644" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2023/01/8B8A5532-1536x1024-1-1536x800.jpg 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2023/01/8B8A5532-1536x1024-1-770x400.jpg 770w" sizes="(max-width: 1536px) 100vw, 1536px" /><figcaption>Copyright: Paul Lutz und Moritz Raimund, FH St. Pölten</figcaption></figure>



<p>Auf dem Poster konnte man neben Screendesigns auch einen QR-Code sehen. Dieser führte zu einem Linktree mit Verlinkungen zur Startseite von jukebox.party. Zusätzlich gab es auch einen Link zu einem Google Form, um sich für die Nutzung dieser Version anzumelden.&nbsp;</p>



<p>Dadurch, dass bei unserem Stand Musik lief, interessierten sich einige Besucher für unseren Stand. Das Interesse war sehr groß und die Idee hat eigentlich jedem, der mit uns geredet hat, gefallen.</p>



<p></p>



<h2 class="wp-block-heading">So geht es weiter</h2>



<p>Mit der Projektevernissage haben wir unser erstes großes Ziel erreicht. Hier hat das Projekt bei den Standbesucher*innen großes Interesse geweckt und das Feedback war durchweg positiv. Einige der Besucher*innen wollten die Applikation direkt bei der nächsten eigenen Geburtstagsfeier, Familienfeier oder Ähnlichem nutzen.&nbsp;</p>



<p>Zurzeit befindet sich das Projekt im Developer-Modus bzw. wird der Developer-Modus der Spotify API genutzt. Das bedeutet, dass Personen, welche jukebox.party nutzen möchten, im Developer Dashboard des Projekts eingetragen werden müssen. Hier können bis zu 25 Spotify Accounts, eingetragen durch die genutzte E-Mail Adresse bei Spotify, vermerkt werden. Ist der Spotify Account in dieser Liste hinterlegt kann unsere Applikation von bis zu 25 Nutzer*innen genutzt werden. Diese 25 hinterlegten Spotify Accounts beziehen sich bei unserer Projektidee nur auf die Hosts einer Party, da die Partygäste auf die Warteliste des Hosts zugreifen und nicht selbstständig über ihren eigenen Account Requests an Spotify senden.</p>



<p>Aufgrund des durchweg positiven Feedbacks bisher, überlegt die Projektgruppe, die Projektidee bei Spotify vorzustellen, um den ‘extended quota modus’ zu erhalten. Dieser Modus erlaubt eine höhere Serveranfrage-Rate und die Nutzung der Applikation durch unendlich viele Nutzer*innen (das Eintragen der Spotify-Accounts in die Liste entfällt). Jedoch muss hierfür ein Antrag mit einer Beschreibung des Projekts, mittels eines Formulars, bei Spotify eingereicht werden. Außerdem muss die Applikation einige Anforderungen erfüllen, welche in der <a href="https://developer.spotify.com/policy/">Spotify Developer Policy</a> festgelegt sind. Diese Regeln enthalten Kriterien zur Speicherung von (Nutzer*innen-)Daten, zum Branding, der Präsentation der Inhalte, etc.&nbsp;</p>



<p>Das Projektteam plant als nächsten Schritt ein Code-Review, um die Wartbarkeit des Codes sicherzustellen. Außerdem sollen im Zuge dessen Bugs ermittelt und gelöst werden. Des Weiteren möchte die Projektgruppe die <a href="https://developer.spotify.com/policy/">Spotify Developer Policy</a> studieren, um feststellen zu können, welche Kriterien noch erfüllt werden müssen, um den ‘extended quota modus’ zu erhalten.Möglicherweise ist es bald soweit und jukebox.party bietet dir eine einfache Möglichkeit die Warteliste einer Party mit deinen Freund*innen zu gestalten &#8211; <em>because music is always better with friends.</em></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/jukebox/">Jukebox.party &#8211; App für gemeinsames Musikhören</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Lento &#8211; Weiterentwicklung der Spotify-Social-Media-App</title>
		<link>https://mobile.fhstp.ac.at/allgemein/lento2/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Thu, 19 Jan 2023 12:33:35 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[lento]]></category>
		<category><![CDATA[masterklasse]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10605</guid>

					<description><![CDATA[<p>Die Grundlage für die App &#8220;Lento&#8221; wurde im Laufe des zweiten Semesters (SS 2022) von Fabian Gaugusch und Lukas Ganster im Rahmen der Masterklasse Mobile (Studiengang Interactive Technologies) entwickelt. Im Rahmen des dritten Semester (WS 2022) wurde auf diesem Fundament die App weiterentwickelt bzw. auch umgebaut. Das Konzept der Anwendung ist ein soziales Netzwerk auf <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/lento2/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/lento2/">Lento &#8211; Weiterentwicklung der Spotify-Social-Media-App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die Grundlage für die App &#8220;Lento&#8221; wurde im Laufe des zweiten Semesters (SS 2022) von Fabian Gaugusch und Lukas Ganster im Rahmen der Masterklasse Mobile (Studiengang Interactive Technologies) entwickelt. Im Rahmen des dritten Semester (WS 2022) wurde auf diesem Fundament die App weiterentwickelt bzw. auch umgebaut. Das Konzept der Anwendung ist ein soziales Netzwerk auf Basis von Spotify, in dem Songs, Alben oder Playlists bewertet und kommentiert werden können. Der User soll sehen können, was seine Freund:innen gerade hören, um den Musikgeschmack der eigenen Freund:innen besser zu verstehen. In einem <a href="https://akirchknopf-21110.php.fhstp.cc/development/lento/" target="_blank" rel="noreferrer noopener">früheren Artikel</a> auf dieser Blog-Seite wurde das Konzept von Lento bereits vorgestellt.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1316" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/lento-f1-1-1316x800.jpg" alt="" class="wp-image-10061" /><figcaption>Screenshot 1. Lento-App</figcaption></figure>



<h2 class="wp-block-heading">Performance und Security</h2>



<p>In einer früheren Version von Lento wurden alle Requests, die an die Spotify-API geschickt werden, direkt vom Client-Gerät aus gesendet. Das hatte zur Folge, dass viele Requests redundant waren und auch hinsichtlich der Performance Luft nach oben hatten. Außerdem war die Idee im gesamten Funktionsumfang auch stark eingeschränkt, wenn die Daten zur Spotify-Authentifizierung nicht am Server, sondern am Client liegen. Funktionen wie die täglichen Empfehlungen oder die Playlisten von bestimmten Nutzer:innen waren nur eingeschränkt möglich.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="960" height="720" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/01/Authorization_3Sem.png" alt="" class="wp-image-10606" /><figcaption>Screenshot 2. Konzept zum Verlagern der Spotify-Requets an die Lento Api</figcaption></figure>



<p>Im Folge des dritten Semesters wurde aus technischer Sicht also in erster Linie ein Großteil der Spotify-bezogenen Logik vom Frontend (React Native App) ins Backend (Nest.js Server) verlagert. Dies bietet eine robuste Grundlage für die weitere Entwicklung und Skalierung der Software.</p>



<h2 class="wp-block-heading">Farbe des Album-Covers durch Vibrant.js</h2>



<p>Vibrant.js ist eine JavaScript-Bibliothek, die es ermöglicht, Farbpaletten aus Bildern zu extrahieren und diese Farben als JS-Objekte zu verwenden. Mit Vibrant.js können Entwickler:innen Farbpaletten aus Bildern generieren und diese Farben in ihren Webprojekten verwenden, um ein einheitliches Design zu erzielen oder Bildelemente hervorzuheben. Diese Library wurde in der neuen Version der Lento Api eingebettet und kann auch über die Schnittstelle <em><strong>https://lentoapi.herokuapp.com/dominantColor?url=albumartworkurl</strong></em> erreicht werden. Wie in Screenshot 3 ersichtlich, wurde damit die Anzeige der Songs bzw. Songcovers personalisierter gestaltet.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img loading="lazy" decoding="async" width="488" height="400" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2023/01/image-5-1-488x400.jpg" alt="" class="wp-image-10608" /><figcaption>Screenshot 3. Dominante Farbe von Cover wird im Hintergrund als linearer Farbverlauf eingebettet</figcaption></figure></div>


<h2 class="wp-block-heading">Next up</h2>



<p>Im Rahmen des vierten Semesters und darüber hinaus ist geplant, die App weiterzuentwickeln und auch in naher Zukunft ein Minimal-Valuable-Product fertigzustellen. Ein Teammitglied (Fabian Gaugusch) arbeitet auch im Rahmen seiner Diplomarbeit an der App, speziell aus dem Aspekt der Datenvisualisierung, weiter.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/lento2/">Lento &#8211; Weiterentwicklung der Spotify-Social-Media-App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Intro &#8211; Lento: Soziale Plattform aufbauend auf Spotify</title>
		<link>https://mobile.fhstp.ac.at/development/lento/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Mon, 20 Jun 2022 16:03:52 +0000</pubDate>
				<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[lento]]></category>
		<category><![CDATA[react-native]]></category>
		<category><![CDATA[spotify]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10047</guid>

					<description><![CDATA[<p>Im Laufe des 2.Semesters (SS 2022) haben Fabian Gaugusch und Lukas Ganster im Rahmen der Masterklasse Mobile (Studiengang Interactive Technologies) der Grundstein für die App &#8220;Lento&#8221; errichtet. Die Idee der Applikation ist eine soziales Netzwerk, aufbauend auf Spotify, bei dem Songs, Alben oder Playlisten bewertet oder kommentiert werden können. Man soll sehen können, was bei <a class="read-more" href="https://mobile.fhstp.ac.at/development/lento/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/lento/">Intro &#8211; Lento: Soziale Plattform aufbauend auf Spotify</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im Laufe des 2.Semesters (SS 2022) haben <strong>Fabian Gaugusch </strong>und <strong>Lukas Ganster</strong> im Rahmen der Masterklasse Mobile (Studiengang Interactive Technologies) der Grundstein für die App &#8220;Lento&#8221; errichtet. Die Idee der Applikation ist eine soziales Netzwerk, aufbauend auf Spotify, bei dem Songs, Alben oder Playlisten bewertet oder kommentiert werden können. Man soll sehen können, was bei den Freund:innen gerade beliebt ist und so auch über den Musikgeschmack der eigenen Bubble besser Bescheid wissen.</p>



<h2 class="wp-block-heading">Technische Umsetzung</h2>



<p>Für die Umsetzung der App, welche auf iOS und Android verfügbar sein wird, wurde die Library <strong>React-Native </strong>herangezogen. Ein wichtiges Augenmerk bei der Auswahl dieser Technologie waren die vielen Vorteile gegenüber vergleichbaren Frameworks wie Ionic (Handling des Back-Buttons) oder Flutter (Programmierung mit Plain JS). Das Testing während der Entwicklung lief mit dem Package Expo, welches eine stetiges Livetesten der App auf dem eigenen Smartphone mittels der Expo-App ermöglicht. Für das Backend wurde <strong>NestJS</strong> verwendet, was die wesentlichen Funktionalitäten einfach und recht unkompliziert bereitstellte. Noch dazu war hierbei ein wichtiges Argument, dass wir mit Armin Kirchknopf immer einen zuverlässigen Ansprechpartner bei etwaigen Problemen bzw. Herausforderungen mit der Technologie hatten. Die Datenspeicherung läuft über eine dokumentbasierte <strong>MongoDB-Datenbank</strong>, welche wir über die Laufzeit des Projektes zu lieben (und hassen) gelernt haben. Für die Spotify-Daten bzw. den Input Richtung soziales Netzwerk nutzten wir die offizielle <strong>Spotify API</strong>, welche vor allem am Anfang hinsichtlich Login-Prozess eine kleine Hürde war.</p>



<h2 class="wp-block-heading">Funktionsübersicht</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1316" height="800" data-id="10056" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/lento-f1-1316x800.jpg" alt="" class="wp-image-10056" /><figcaption>Songansicht</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1316" height="800" data-id="10059" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/lento-f2-1316x800.jpg" alt="" class="wp-image-10059" /><figcaption>Features von Song</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1316" height="800" data-id="10060" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/lento-f3-1316x800.jpg" alt="" class="wp-image-10060" /><figcaption>Leuten folgen und Aktivitätsansicht</figcaption></figure>
</figure>



<p>Im Wesentlichen soll es, wie bereits beschrieben, möglich sein, seine Meinung über bestimmte Songs, Alben oder Playlists mit anderen Personen (bereits bekannte Spotify-Follower:innen oder neue Leute) zu teilen. Lento soll hier als Austauschs- und Diskussionsplattform agieren und ein Ort sein, wo man gleichgesinnte Leute hinsichtlich des Musikgeschmackes (wir nennen es &#8216;Soulmates&#8217;) finden kann. Eine Visualisierung von ausgewählten Key-Features bzw. Eigenschaften eines Songs wie beispielsweise die <em>tanzbarkeit</em> oder die <em>energy </em>sollen auch visualisiert werden. Besonders wichtig ist hier auch die soziale Komponente in der Aktivitätsübersicht (analog zu Facebook bzw. Instagram), wo man die Aktivitäten von Personen, denen man in der App folgt, sehen kann</p>



<h2 class="wp-block-heading">Learnings</h2>



<p>Das Projekt hat wieder mal gezeigt, wie wichtig die sorgfältige Planung im Vorhinein für den späteren Verlauf des Entwicklung ist. Besonders gegen Ende des Semesters sind viele Pain-Points (zB.: Schlecht geschriebener/ unperfomanter Code) aufgefallen, die es im Fortlauf des Studiums zu beheben gilt. Die Verwendung von React-Native bzw. NestJS war mit Sicherheit die richtige Entscheidung, weil sich bis jetzt dadurch wenige Downsides aufgetan haben und die positiven Aspekte auf jeden Fall überwiegen.</p>



<h2 class="wp-block-heading">Ausblick</h2>



<p>Die Entwicklung von Lento ist mit dem aktuellen Stand (20.Juni 2022) noch lange nicht abgeschlossen. Geplant ist eine Fortführung der Plattform im 3.Semester (Refactoring, Neue Kernfeatures bzw. Beta-Phase) sowie eine Einreichung beim Creative-Pre-Incubator.</p>



<p>Im Rahmen der Lehrveranstaltung Tun-Forschen-Gründen wurde Lento auch als Business-Idee präsentiert. Die dazugehörigen Folien zum Pitch finden sich im Anhang dieses Artikels.</p>



<p>Um einen Einblick in das Look and Feel der App zu bekommen kann auch gerne der <a href="https://www.figma.com/proto/4n3RpPCnEKG8ngs3YgGftt/Lento?scaling=scale-down&amp;page-id=0%3A1&amp;node-id=4%3A2&amp;starting-point-node-id=4%3A2" target="_blank" rel="noreferrer noopener">Figma-Prototyp </a>durchgeklickt werden.</p>



<h2 class="wp-block-heading">TFG-Pitch Folien</h2>



<div data-wp-interactive="core/file" class="wp-block-file"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/2022_Lento.pdf">2022_Lento</a><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/2022_Lento.pdf" class="wp-block-file__button" download>Herunterladen</a></div>
<p>The post <a href="https://mobile.fhstp.ac.at/development/lento/">Intro &#8211; Lento: Soziale Plattform aufbauend auf Spotify</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How To: Docker mit React und Node</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/how-to-docker-mit-react-und-node/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Sun, 19 Jun 2022 18:25:37 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[React]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10029</guid>

					<description><![CDATA[<p>In diesem Artikel wird kurz und knapp gezeigt, wie man einen Docker-Container für eine einfache Applikation, bestehend aus React-Frontend und Node-Backend aufsetzt.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/how-to-docker-mit-react-und-node/">How To: Docker mit React und Node</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Docker gibt Entwickler:innenn die Möglichkeit, alle ihre Anwendungen in Containern zu verpacken. Diese Container können auf jedem Rechner ausgeführt werden, auf dem Docker installiert ist und die Applikation laufen kann. Dies ist eine großartige Möglichkeit, einen identen &#8220;Klon&#8221; einer Codebasis auf mehreren Systemen laufen zu lassen mit dem großen Vorteil, dass man sicher sein kann, dass alle identisch sind.</p>



<p>CI/CD-Workflows und DevOps-Testumgebungen werden durch die Verwendung von Docker, das im Wesentlichen eine Reihe von Softwaretools ist, die gemeinsam genutzt werden können, erheblich verbessert. Kubernetes ist ein weiteres Tool, das für den Betrieb mehrerer Docker-Container verwendet wird, allerdings in einem viel größeren Maßstab. Das wird vor allem relevant, wenn man bei seinen Anwendungen von Skalierbarkeit spricht.</p>



<p>In diesem Beitrag zeige ich, wie man ein NodeJS Express-Backend und ein React-Frontend in einem Docker-Container erstellt und betreibt.</p>



<h2 class="wp-block-heading">Inbetriebnahme eines Node-Backends in Docker</h2>



<p>Bevor ihr beginnt, solltet ihr sicherstellen, dass Docker auf eurem Computer installiert ist und läuft.</p>



<p>Nun navigieren wir in ein Verzeichnis, wo unser Docker-Container platziert werden soll. Anschließend werden folgenden Code-Zeilen ausgeführt.</p>



<pre class="wp-block-code"><code>mkdir my-app-docker
cd my-app-docker
touch docker-compose.yml
mkdir api
cd api
npm init -y
npm i express
touch app.js Dockerfile .dockerignore
cd ..</code></pre>



<p>Wir haben ein Backend namens api eingerichtet und einige Docker-Dateien erstellt. Öffnen wir nun das Projekt in unserem Code-Editor und fügen den untenstehenden Code in die entsprechenden Dateien ein.</p>



<p>Fügen den Code in die Datei <strong>docker-compose.yml</strong> ein. Die Formatierung der yaml-Datei muss sorgfältig vorgenommen werden, da sonst Docker-Fehler auftreten, wenn versucht wird, die Datei auszuführen.</p>



<pre class="wp-block-code"><code>version: '3.8'
services:
  api:
    build: ./api
    container_name: api_backend
    ports:
      - '4000:4000'
    volumes:
      - ./api:/app
      - ./app/node_modules</code></pre>



<p>Und folgender Codeblock wird in die <strong>app.js</strong> &#8211; Datei geschrieben und repräsentiert unser Node-Backend.</p>



<pre class="wp-block-code"><code>const express = require('express');

const app = express();

const port = process.env.PORT || 4000;

app.get('/', (req, res) =&gt; {
  res.send('Home Route');
});

app.listen(port, () =&gt;
  console.log(`Server running on port ${port}, http://localhost:${port}`)
);</code></pre>



<p>Anschließend kann man das <strong>.dockerignore</strong> &#8211; File so konfigurieren, dass der node_modules-Ordner, ähnlich wie beim Git-Ignore, nicht mitprotokolliert wird. Einfach folgende Zeile beifügen.</p>



<pre class="wp-block-code"><code>node_modules</code></pre>



<p>Desweiteren wird folgender Code in die Datei <strong>Dockerfile</strong> hinzugefügt.</p>



<pre class="wp-block-code"><code>FROM node:16-alpine

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 4000

CMD &#091;"node", "app.js"]</code></pre>



<p>Abschließend wird noch folgender Abschnitt ins <strong>package.json</strong> &#8211; File hinzugefügt:</p>



<pre class="wp-block-code"><code>"scripts": {

 "start": "node app.js"

},</code></pre>



<h3 class="wp-block-heading">(Optional) Nodemon um automatische Server-Restarts bei Änderungen zu ermöglichen</h3>



<p>Wenn man möchte, dass der Server jedes Mal neu startet, wenn man eine Änderung an den Dateien im Backend vornimmt, kann man ihn für die Verwendung von Nodemon konfigurieren.</p>



<p>Dazu ist es ausreichend, die <strong>Dockerfile</strong>&#8211; und <strong>package.json</strong>-Datei im api-Ordner zu aktualisieren.</p>



<p>Aktualisiere den Code in der Dockerdatei mit dem unten stehenden Code. Wir installieren nun Nodemon beim Start und verwenden dev als Ausführungsbefehl.</p>



<pre class="wp-block-code"><code>FROM node:16-alpine

RUN npm install -g nodemon

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 4000

CMD &#091;"npm", "run", "dev"]</code></pre>



<p>Natürlich muss auch das <strong>package.json</strong>-File wie folgt aktualisiert werden für die Verwendung Nodemon:</p>



<pre class="wp-block-code"><code>"scripts": {

 "start": "node app.js",

 "dev": "nodemon -L app.js"

},</code></pre>



<p>Zusammengefasst wurde ein einfacher NodeJS Server mit Express, der auf Port 4000 läuft, aufgesetzt. Wichtig ist hierbei, dass auch der Port 4000 im Docker-Container &#8220;verwendet&#8221; wird, um sozusagen ein Mapping zu ermöglichen.</p>



<h2 class="wp-block-heading">Starten des Servers</h2>



<p>Um den Server außerhalb eines Docker-Containers (auf herkömmliche Art) mit Node wie gewohnt auszuführen, muss nur der folgende Code in der Kommandozeile eingegeben werden.</p>



<p>Dabei müssen vor allem die Inhalte des api-Ordners berücksichtigt werden. Wenn man <em>http://localhost:4000</em> aufruft, sollte man die &#8220;Home-Route&#8221; in seinem Browserfenster sehen.</p>



<pre class="wp-block-code"><code>npm run start</code></pre>



<p>Um die NodeJS Express-App innerhalb von Docker zum Laufen zu bringen, ist ein anderer Befehl erforderlich. Zunächst muss man sich im Stammverzeichnis befinden, in dem sich die Datei docker-compose.yml befindet. Anschließend führen wir den unten stehenden Befehl aus und die Anwendung sollte in einem Docker-Container laufen.</p>



<pre class="wp-block-code"><code>docker-compose up</code></pre>



<p>Man muss natürlich darauf auchten, zuerst den Node-Server zu stoppen, da man nur einen Server auf Port 4000 laufen lassen kann.</p>



<p>Wenn man nun wieder auf <em>http://localhost:4000</em> geht, sie man ebenso die &#8220;Home-Route&#8221;. Nur diesmal direkt aus Docker heraus.</p>



<p>Den Server kann man mit dem unten stehenden Befehl stoppen, oder man geht zur Docker-App und stoppt die Ausführung des Containers.</p>



<pre class="wp-block-code"><code>docker-compose down</code></pre>



<h2 class="wp-block-heading">Aufsetzen des React-Frontends in Docker</h2>



<p>Im nächsten Schritt erstellen wir innerhalb unseres Docker-Containers ein React-Frontend. Dafür navigieren wir mittels der Kommandozeile in den Root-Ordner von <strong>my-app-docker</strong>. Einfach folgende Befehle fürs Setup ausführen:</p>



<pre class="wp-block-code"><code>npx create-react-app client
cd client
touch .dockerignore Dockerfile</code></pre>



<p>Nun fügen wir den untenstehenden Code in die korrespondierenden Files ein:</p>



<p>Diese Zeile kommt, wie gewohnt, ins <strong>.dockerignore </strong>File:</p>



<pre class="wp-block-code"><code>node_modules</code></pre>



<p>Genauso wie bereits oben, wird auch das <strong>Dockerfile</strong> File konfiguriert: </p>



<pre class="wp-block-code"><code>FROM node:17-alpine

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 3000

CMD &#091;"npm", "start"]</code></pre>



<p>Schließlich aktualisieren wir das docker-compose.yml File im Root-Ordner mit dem untenstehenden Codeblock. Im Gegensatz zu vorhin gibt es jetzt auch eine Sektion am Ende, die für die Einstellungen bzw. Konfigurationen des React-Frontend-Projektes stehen. Hier muss man wieder besonders vorsichtig mit der richtigen Formattierung des YAML-Files sein, um etwaige Docker-Fehler präventiv zu vermeiden.</p>



<pre class="wp-block-code"><code>version: '3.8'
services:
  api:
    build: ./api
    container_name: api_backend
    ports:
      - '4000:4000'
    volumes:
      - ./api:/app
      - ./app/node_modules
  client:
    build: ./client
    container_name: client_frontend
    ports:
      - '3000:3000'
    volumes:
      - ./client:/app
      - ./app/node_modules
    stdin_open: true
    tty: true</code></pre>



<h2 class="wp-block-heading">Grande finale &#8211; Starten der Applikation</h2>



<p>Ähnlich wie vorhin kann man mit einem simplem Befehl die Applikation normal (außerhalb von Docker) starten. Sicher gehen, dass man im Folder der Client-App ist und den untenstehenden Befehl ausführen. Wenn man jetzt zu <em>http://localhost:3000</em> geht, sollte man die Startseite einer Boilerplate-React-App sehen.</p>



<pre class="wp-block-code"><code>npm run start</code></pre>



<p>Um die React-App innerhalb von Docker zum Laufen zu bringen, ist ein anderer Befehl erforderlich. Zunächst muss man sich im Root-Ordner befinden, in dem sich die Datei <strong>docker-compose.yml </strong>befindet. Anschließend sollte die App innerhalb eines Docker-Containers laufen, indem man den folgenden Befehl ausführen:</p>



<p>Natürlich darf auch hier nicht vergessen werden, die React-App auf Port 3000 zu beenden, da nur immer eine Applikation den Port 3000 verwenden kann.</p>



<pre class="wp-block-code"><code>docker-compose up</code></pre>



<p>Erwartungsgemäß findet man auf http://localhost:3000 danach die laufende Applikation von React.</p>



<p>Schließen lässt sich die Anwendung hier, genauso wie beim Backend mit:</p>



<pre class="wp-block-code"><code>docker-compose down</code></pre>



<p>Mit diesem Setup kann man ein NodeJS-Backend und ein React-Frontend gleichzeitig innerhalb von Docker laufen lassen! Wenn Fehler auftreten, muss man möglicherweise die Docker-Desktop-Anwendung öffnen und alle Images entfernen bzw. neu installieren, die mit diesem Projekt verbunden sind. Dann kann man versuchen, den Befehl <strong>docker-compose up</strong> erneut auszuführen und mit etwas Glück sollte dieses Mal alles wie erwartet funktionieren.</p>



<h3 class="wp-block-heading">Quellen</h3>



<p><a href="https://www.docker.com/get-started/" target="_blank" rel="noreferrer noopener">Docker &#8211; Getting started</a></p>



<p><a href="https://towardsdev.com/react-app-in-docker-a1128c7147ba">Towardsdev &#8211; React App In Docker</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/how-to-docker-mit-react-und-node/">How To: Docker mit React und Node</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PartyHub &#8211; Semesterprojekt WS21</title>
		<link>https://mobile.fhstp.ac.at/allgemein/partyhub-semesterprojekt-ws21/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Tue, 22 Feb 2022 17:45:08 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[partyhub]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9605</guid>

					<description><![CDATA[<p>Im Wintersemester 2021 haben die 3 Studenten Ramon Brullo, Lukas Ganster und Fabian Gaugusch im Rahmen der Masterklasse Mobile ihr Semesterprojekt PartyHub entwickelt. PartyHub ist der Prototyp einer interaktiven Website, die als Einstiegspunkt für diverse Multiplayer-Spiele fungiert. Das Konzept lehnt sich an verwandte Spiele und Applikationen wie Kahoot, Jackbox oder GarticPhone an und bietet den <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/partyhub-semesterprojekt-ws21/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/partyhub-semesterprojekt-ws21/">PartyHub &#8211; Semesterprojekt WS21</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im Wintersemester 2021 haben die 3 Studenten <strong>Ramon Brullo</strong>, <strong>Lukas Ganster</strong> und <strong>Fabian Gaugusch</strong> im Rahmen der Masterklasse Mobile ihr Semesterprojekt PartyHub entwickelt. PartyHub ist der Prototyp einer interaktiven Website, die als Einstiegspunkt für diverse Multiplayer-Spiele fungiert. Das Konzept lehnt sich an verwandte Spiele und Applikationen wie Kahoot, Jackbox oder GarticPhone an und bietet den Spieler:innen zum Start drei verschiedene Mini-Spiele, die sie in einer Gruppe physisch oder virtuell zusammen spielen können. Zum Spielen geht dabei eine Person auf die Website des PartyHubs und wählt ein Spiel aus, dass dann gespielt wird. Im Anschluss wird ein PIN, Link oder QR-Code erstellt, mit dem dann alle beteiligten Spieler auf ihrem Handy den Spiel beitreten können. Wie bereits erwähnt stellt der PartyHub in seiner ersten Version drei Spiele (Möglichkeiten für die Implementierung weiterer Spiele wurde beachtet) zur Verfügung, die im weiteren näher erläutert werden.</p>



<p><a href="https://github.com/PartyHubAT">https://github.com/PartyHubAT</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/partyhub-mockup-1540x800.jpg" alt="" class="wp-image-9658" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/partyhub-mockup-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/02/partyhub-mockup-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /><figcaption>Abbildung 1. Wenn man die PartyHub-Seite betritt, kann man ein Spiel hosten oder einem bestehendem Spiel via PIN beitreten</figcaption></figure>



<h2 class="wp-block-heading">Minispiel 1 &#8211; Exposed</h2>



<p>Bei &#8220;Exposed&#8221; können die Nutzer, nachdem sie das Spiel betreten haben, eine der verfügbaren Kategorien auswählen (Normal oder Spicy). Abhängig von der gewählten Kategorie wird dann allen Nutzer:innen eine der Fragen aus der gewählten Kategorie präsentiert. Zusätzlich werden dann zwei der Spieler:innen herausgepickt und die restlichen Mitspielenden müssen sich dann für eine der beiden Personen entscheiden. Die präsentierte Frage richtet sich nach dem Motto “Wer würde am ehesten …” und stellt somit ein unterhaltsames Partyspiel dar. Nachdem alle Personen abgestimmt haben, wird das Ergebnis dann, natürlich schön visuell aufbereitet, präsentiert. Dieser Prozess wird beliebig oft wiederholt, bis jede Person mit jeder Anderen ein “Match”, also ein Voting hatte. Zum Endes des Spiels wird dann eine Zusammefassung aller durchgespielten Fragen bzw. der Gesamtanzahl der Votingpunkte pro Spieler:in visualisiert.</p>



<p><a href="https://github.com/PartyHubAT/game-exposed">https://github.com/PartyHubAT/game-exposed</a></p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-gallery columns-7 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.32.19.jpg"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.32.19-560x800.jpg" alt="" data-id="9627" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.32.19.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9627" class="wp-image-9627" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.31.19.png"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.31.19-560x800.png" alt="" data-id="9626" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.31.19.png" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9626" class="wp-image-9626" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.41.png"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.41-560x800.png" alt="" data-id="9625" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.41.png" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9625" class="wp-image-9625" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.35.jpg"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.35-560x800.jpg" alt="" data-id="9624" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.35.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9624" class="wp-image-9624" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.18.jpg"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.18-560x800.jpg" alt="" data-id="9623" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.18.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9623" class="wp-image-9623" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.28.42.jpg"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.28.42-560x800.jpg" alt="" data-id="9621" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.28.42.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9621" class="wp-image-9621" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.00.jpg"><img loading="lazy" decoding="async" width="560" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.00-560x800.jpg" alt="" data-id="9622" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Bildschirmfoto-2022-02-22-um-18.29.00.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9622" class="wp-image-9622" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Galerie 1. Ein Überblick über das Minispiel &#8220;Exposed&#8221;</figcaption></figure>
</div>
</div>
</div></div>



<h2 class="wp-block-heading">Minispiel 2 &#8211; Heads Up</h2>



<p>Das Spiel “Heads Up” ist ein Partyspiel in dem zwei Teams aus jeweils mindestens zwei Personen gegeneinander antreten und versuchen, mehr Punkte als ihre Gegner zu erreichen. Die Spieler:in, die gerade an der Reihe ist, hält sich ihr Smartphone an die Stirn, sodass ihre Mitspieler:innen den Bildschirm sehen können, sie selbst jedoch nicht. Auf dem Bildschirm ist ein Wort aus einer zuvor ausgewählten Kategorie zu sehen. Die Spieler:innen, die nicht an der Reihe sind, müssen nun versuchen, ihrer Mitspieler:in so viele Begriffe wie möglich innerhalb von 30 Sekunden zu erklären, wie möglich. Durch das nach vorne oder hinten Kippen des Smartphones kann die aktive Spieler:in ein richtiges Wort bestätigen oder ein zu schweres Wort überspringen. Pro Runde ist jede Spieler:in beider Teams einmal dran. Das Ziel des Spiels ist es natürlich, mehr Wörter als das Gegnerteam zu erreichen.</p>



<p><a href="https://github.com/PartyHubAT/game-heads-up">https://github.com/PartyHubAT/game-heads-up</a></p>



<figure class="wp-block-gallery columns-5 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s1.png"><img loading="lazy" decoding="async" width="419" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s1-419x800.png" alt="" data-id="9665" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s1.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/s1/" class="wp-image-9665" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s2.png"><img loading="lazy" decoding="async" width="414" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s2-414x800.png" alt="" data-id="9666" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s2.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/s2/" class="wp-image-9666" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s3.png"><img loading="lazy" decoding="async" width="770" height="400" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s3-770x400.png" alt="" data-id="9667" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s3.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/s3/" class="wp-image-9667" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s4.png"><img loading="lazy" decoding="async" width="770" height="400" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s4-770x400.png" alt="" data-id="9668" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s4.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/s4/" class="wp-image-9668" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s5.png"><img loading="lazy" decoding="async" width="411" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s5-411x800.png" alt="" data-id="9669" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/s5.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/s5/" class="wp-image-9669" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Galerie 2. Ein Überblick über das Minispiel &#8220;Heads Up&#8221;</figcaption></figure>



<h2 class="wp-block-heading">Minispiel 3 &#8211; And then</h2>



<p>Eine digitale Version, des klassischen Kinderspiels, bei dem man in der Gruppe eine Geschichte erzählen muss, indem man immer einen Satz zur Geschichte hinzufügt, aber immer nur den letzten Satz als Kontext kennt. Jeder Spieler beginnt einen Text mit einem Satz. Der Satz wird von jedem Spieler auf seinem Gerät eingegeben und sollte für die anderen Spieler nicht sichtbar sein. Wenn der Satz fertig ist, wird er abgeschickt und es wird gewartet, bis alle Spieler ihren Text begonnen haben. Als nächstes wird jeder Text zum “nächsten” Spieler weitergegeben, also rotiert. Dieser sieht von dem Text nur den zuletzt geschriebenen Satz und muss nun einen Neuen hinzufügen. Wenn alle Spieler fertig sind, werden diese Schritte wiederholt, bis alle Texte eine zuvor festgelegte Länge an Sätzen haben. Am Schluss werden die gemeinsam geschriebenen Texte den Nutzern präsentiert. Es gibt verschiedene Arten von Texten oder Genres, von denen Spieler wählen können, wie beispielsweise Horror-geschichten, Rezepte und Rap-texte.</p>



<p><a href="https://github.com/PartyHubAT/game-and-then">https://github.com/PartyHubAT/game-and-then</a></p>



<figure class="wp-block-gallery columns-4 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-8.png"><img loading="lazy" decoding="async" width="998" height="732" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-8.png" alt="" data-id="9672" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-8.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/microsoftteams-image-8/" class="wp-image-9672" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-9.png"><img loading="lazy" decoding="async" width="322" height="567" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-9.png" alt="" data-id="9673" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-9.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/microsoftteams-image-9/" class="wp-image-9673" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-10.png"><img loading="lazy" decoding="async" width="317" height="559" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-10.png" alt="" data-id="9674" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-10.png" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/microsoftteams-image-10/" class="wp-image-9674" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-11.jpg"><img loading="lazy" decoding="async" width="1144" height="662" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-11.jpg" alt="" data-id="9675" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/MicrosoftTeams-image-11.jpg" data-link="https://akirchknopf-21110.php.fhstp.cc/allgemein/partyhub/attachment/microsoftteams-image-11/" class="wp-image-9675" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Galerie 3. Ein Überblick über das Minispiel &#8220;And then&#8221;</figcaption></figure>



<h2 class="wp-block-heading">Technische Umsetzung</h2>



<p>Das Projekt wurde mithilfe einer Kombination eines node.js-servers, vue-frontends und Kommunikation mittels http-requests und socket.io umgesetzt. Der Webserver erlaubt Zugriff auf das Frontend in dem sich die Spieler mithilfe von WebSockets in einen gemeinsamen Raum zusammenfinden können. Die Kommunikation hier ist bidirektional und in Echtzeit zwischen dem Server und allen Spielern. Jeder Spiele-entwickler stellt die eigene server-seitige und client-seitige Logik zur Verfügung die bei Auswahl und Start des Spiels geladen und an alle Spieler gesendet wird. Die Spiele werden im Frontend innerhalb eines iFrames gehostet und kommunizieren ebenfalls mithilfe von WebSockets mit dem Server.</p>



<h2 class="wp-block-heading">Leasons learned</h2>



<p>Beim Projekt „PartyHub“ haben sich die drei Studenten ein großes und aufwendiges Ziel gesetzt. Neben dem Implementieren eines Spieles von jedem der drei Mitglieder war die Hoffnung von PartyHub, es anderen Student:innen zu ermöglichen, ihre eigenen Spiele zu programmieren und dem PartyHub hinzuzufügen. Dies gelang den drei zwar, jedoch mit mehr Einschränkungen als geplant.</p>



<p>Im Laufe des Projektes waren sie mehrmals sowohl in technischer, als auch in organisatorischer Hinsicht vor Probleme gestellt, die zu lösen waren, bevor das Projekt gut voranschreiten konnte. Obwohl das Projekt letztendlich ihrer Meinung nach nicht zur vollständigen Zufriedenheit abgeschlossen werden konnte, diente es trotzdem als hervorragende Unterlage für neue Erkentnisse was die Arbeit im Team und die technische Umsetzung eines solchen Projektes betrifft.</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th><strong><strong>Technische Aspekte</strong></strong></th><th><strong>Organisatorische Aspekte</strong></th></tr></thead><tbody><tr><td>Vue 3</td><td>Github Workflow (Branches, Issues)</td></tr><tr><td>Socket.io</td><td>Regelmäßige Kommunikation über Teams</td></tr><tr><td>Komplexe Projektstruktur (Verwendung von anderen Repos innerhalb eines einzigen)</td><td>&nbsp;Abstimmungen im Team</td></tr><tr><td>JSDoc</td><td>&nbsp;</td></tr><tr><td>TailwindCSS</td><td>&nbsp;</td></tr><tr><td>Node und Express</td><td>&nbsp;</td></tr><tr><td>Webpack</td><td></td></tr></tbody></table></figure>



<p></p>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/partyhub-semesterprojekt-ws21/">PartyHub &#8211; Semesterprojekt WS21</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Die Zukunft der Webentwicklung: HTTP/3</title>
		<link>https://mobile.fhstp.ac.at/development/die-zukunft-der-webentwicklung-http-3/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Mon, 21 Feb 2022 19:44:23 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[HTTP-Requests]]></category>
		<category><![CDATA[http3]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9355</guid>

					<description><![CDATA[<p>HTTP steht als Akronym für Hypertext Transfer Protocol und wird seit vielen Jahren als Goldstandard der Datenübertragung im Internet angesehen. Es stellt auf Anwenderebene ein Protokoll zur Übertragung von Daten dar und regelt die Kommunikation zwischen verschiedenen Rechnern in einem Netzwerk. In den meisten Fällen wird es verwendet, um Inhalte von einem Server an einen <a class="read-more" href="https://mobile.fhstp.ac.at/development/die-zukunft-der-webentwicklung-http-3/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/die-zukunft-der-webentwicklung-http-3/">Die Zukunft der Webentwicklung: HTTP/3</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-drop-cap">HTTP steht als Akronym für Hypertext Transfer Protocol und wird seit vielen Jahren als Goldstandard der Datenübertragung im Internet angesehen. Es stellt auf Anwenderebene ein Protokoll zur Übertragung von Daten dar und regelt die Kommunikation zwischen verschiedenen Rechnern in einem Netzwerk. In den meisten Fällen wird es verwendet, um Inhalte von einem Server an einen Client zu laden. (<em>The HTTP Protocol As Implemented In W3</em>, o.&nbsp;J.)</p>



<h2 class="wp-block-heading">Grundlegender Aufbau von HTTP</h2>



<p>Aus einer Zusammenarbeit der IETF (Internet Engineering Task Force) und dem W3C (World Wide Web Consortium) wurde ein weltweit gültiger Standard für das Hypertext Transfer Protocol entwickelt. Das Übertragunsprotokoll wird zustandlos betrieben, was bedeutet, dass Informationen von früheren Anforderungen nicht gespeichert werden. Durch Konzepte wie Cookies oder Local Storage wird es Programmen möglich gemacht, bestimme Informationen (zum Beispiel die Artikel eines Warenkorbes) entsprechend zuzuordnen. Durch die Verwendung des zuverlässigen und verbindungsorientierten Transportprotkolls TCP können nicht nur Hypertext-Übertragungen stattfinden, sondern jegliche Art von Datne übertragen werden.(<em>Was ist HTTP?</em>, o.&nbsp;J.)</p>



<h2 class="wp-block-heading">Status quo mit HTTP/2</h2>



<p>Die aktuell gängige Version HTTP/2, die am 14.Mai 2015 mit Google als treibende Kraft eingeführt wurde, brachte wesentliche Erneuerungen hinsichtlich der Minimierung von Bildinhalten und Skritpen sowie der Möglichkeit des Multiplexing von Requests und Respones. Primär sollten damit die Probleme hinsichtlich der Übertragsgungslatenz von HTTP/1.1 minimiert werden, um eine Beschleunigung der Netzwerkverbindung und des Internets im Allgemeinen zu erreichen (Belshe et al., 2015). Aktuell bieten knapp 97% aller modernen Webbrowser eine Unterstützung für Version 2, wie auf Abbildung 1 zu sehen ist.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="908" height="304" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/http2-0.png" alt="" class="wp-image-9358" /><figcaption>Abbildung 1. Browsersupport von HTTP/2. („http2“ | Can I use&#8230; Support tables for HTML5, CSS3, etc, o.&nbsp;J.)</figcaption></figure>



<p></p>



<p>Statistiken über die Verwendung des Standards von 2015 im Internet zeigen, dass etwa 46.5% aller Webseiten, wie Statistiken über die Verwendung des Standards im Internet zeigen, dass etwa 46.5% aller Webseiten, wie auf Abbildung 2 illustriert, die Version 2 integriert haben. Die aktuellen Datenlage zeigt also, dass HTTP/2 wesentliche technische Verbesserungen im Bereich der Ladezeiten bietet, aber dennoch noch nicht flächendeckend verwendet wird und inzwischen sogar eine dritte Iteration vor der Tür steht.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/http2-1.png" alt="" class="wp-image-9359" width="838" height="561" /><figcaption>Abbildung 2. Verwendung von HTTP/2.(Usage Statistics of HTTP/2 for Websites, February 2022, o.&nbsp;J.)</figcaption></figure>



<h2 class="wp-block-heading">Was ist HTTP/3?</h2>



<p>Zum Zeitpunkt des Verfassens dieses Artikels im Februar 2022, handelt es sich bei HTTP/3 um einen IETF-Internet-Draft oder ID, was heißt, dass es derzeit von der Internet Engineering Task Force – einem internationalen Gremium für Standards im Internet wie TCP oder IPv6 für eine Klassifizierung als kommender offizieller Internet-Standard geprüft wird (<em>AUTH48 status page for C430 » RFC Editor</em>, o.&nbsp;J.). Bei der neuen Iteration wurde das Rad aber keinesfalls neu erfunden, sondern von der IETF einfach die Zeichen der Zeit erkannt und ein neueres Webprotokoll entworfen, dass mehr Sicherheit bieten, eine Übertragung sowie effektivere Verbindungen gewährleisten soll.</p>



<p>Google entwickelt bereits seit dem Jahr 2012 an einer Alternative der bisher gängigen Datenübertragung bei HTTP bis zur Version 2. Das Übertragungsprotokoll QUIC, was soviel wie Quick UDP Internet Connections heißt, setzt im Vergleich zu den bisherigen Versionen auf das verbindungslose Transportprotokoll User Datagram Protocol (UDP) und soll in naher Zukunft die TCP-basierten Verbindungsprotokolle ablösen. UDP baut während des Datentransports keine expliziten Verbindungsleitungen auf und verlangt keine Bestätigung des Datenempfangs. Eventuell erforderliche Fehlerkorrekturen erfolgen auf QUIC-Ebene, was letztlich die Anzahl der Pakete reduziert und zu einer erheblichen Geschwindigkeitssteigerung führt. Die IETF einigte sich darauf, dass von Google präsentierte Technologie QUIC als Grundlage für die nächste HTTP-Version herangezogen werden soll (<em>HTTP/3</em>, o.&nbsp;J.-a, S. 3).</p>



<h2 class="wp-block-heading">Vorteile und mögliche Probleme von HTTP/3</h2>



<p>Bei HTTP/3 werden die einzelnen Datenströme getrennt behandelt. Geht ein Paket auf dem Weg verloren, sind also nicht mehr alle Datenströme betroffen, wie es bei einer TCP-Übertragung der Fall war. Stattdessen muss bei HTTP/3 nur der tatsächlich betroffene Datenstrom warten, bis das fehlende Paket nachgeliefert wird. Zusätzlich dazu wird auch noch die Paketumlautzeit reduziert. Dabei handelt es sich um die Zeit, die ein Datenpaket benötigt, um an seinem Ziel anzukommen, zusätzlich zu der Zeit, die für die Bestätigung des Empfangs der Daten erforderlich wäre.</p>



<p>Die Verbindungen in der zu QUIC-Technologie werden über die IP-Adresse sowie einen UDP-Port aufgebaut. Sobald die Verbindung erfolgreich aufgebaut worden ist, wird eine eindeutige Verbindungskennung vergeben, mit der es in weiterer Folge dann auch möglich ist, die Verbindung unabhängig von der jeweiligen IP-Adresse zuzuordnen. Somit ist es durchaus möglich, einen Download auf einem Gerät in einem WLAN-Netzwerk zu starten und später mit dem Mobilfunknetzt fortzuführen (<em>HTTP/3</em>, o.&nbsp;J.-b).</p>



<p>Ein großes Problem welches die Einführung von einem UDP-basierten Standard mit sich bringen könnte wäre, dass das mit TCP verbundene Verschlüsselungsprotokoll Transport Layer Security (TLS) auch verloren ginge. Da Sicherheitsüberprüfung und Verschlüsselung dann nicht mehr über TLS, sondern über UDP direkt erfolgt, befürchten viele Provider einen massiven Anstieg von schlecht zu prüfender Datenübertragung (<em>HTTP/3</em>, o.&nbsp;J.-a, S. 3).</p>



<h2 class="wp-block-heading">Fazit und Ausblick</h2>



<p>Die grundlegenden Ideen und Vorstellungen von HTTP/3 sind alle nachvollziehbar und bringen in der Theorie deutliche Verbesserungen zum bisherigen Hypertext Transfer Protocol. Vor allem die schnelleren Datenübertragunsraten könnten für eine, immer vernetztere Welt und Innovationen wie Internet of Things oder Cloud-Services einen deutlichen Mehrwert darstellen.</p>



<p>Ob und wie schnell der Entwurf auch offiziell als Standard klassifiziert bleibt in der Praxis abzuwarten. Inzwischen haben aber bereits alle modernen Browser wie Chrome, Mozilla und Safari eine Unterstützung für die neue Technologie vorgestellt (<em>HTTP/3 protocol | Can I use&#8230; Support tables for HTML5, CSS3, etc</em>, o.&nbsp;J.). Sobald dieser Standard dann verabschiedet wurde, muss das neue Protokoll dann auch von der breiten Masse akzeptiert und implementiert werden. Realistisch betrachtet, dürften aber noch einige Jahre vergehen.</p>



<h2 class="wp-block-heading">Literaturverzeichnis</h2>



<p><em>AUTH48 status page for C430 » RFC Editor</em>. (o.&nbsp;J.). Abgerufen 21. Februar 2022, von https://www.rfc-editor.org/auth48/C430</p>



<p>Belshe, M., Peon, R., &amp; Thomson, M. (2015). <em>Hypertext Transfer Protocol Version 2 (HTTP/2)</em> (Request for Comments RFC 7540). Internet Engineering Task Force. https://doi.org/10.17487/RFC7540</p>



<p><em>„http2“ | Can I use&#8230; </em><em>Support tables for HTML5, CSS3, etc</em>. (o.&nbsp;J.). Abgerufen 5. Februar 2022, von https://caniuse.com/?search=http2</p>



<p><em>HTTP/3: Das nächste Hypertext Transfer Protocol einfach erklärt</em>. (o.&nbsp;J.-a). IONOS Digitalguide. Abgerufen 21. Februar 2022, von https://www.ionos.at/digitalguide/hosting/hosting-technik/http3-erklaert/</p>



<p><em>HTTP/3 protocol | Can I use&#8230; Support tables for HTML5, CSS3, etc</em>. (o.&nbsp;J.). Abgerufen 21. Februar 2022, von https://caniuse.com/http3</p>



<p><em>HTTP/3: Wir erklären die nächste Version des Hypertext Transfer Protocols</em>. (o.&nbsp;J.-b). t3n Magazin. Abgerufen 21. Februar 2022, von https://t3n.de/news/http3-erklaert-hyper-text-transport-protocol-1398125/</p>



<p><em>The HTTP Protocol As Implemented In W3</em>. (o.&nbsp;J.). Abgerufen 5. Februar 2022, von https://www.w3.org/Protocols/HTTP/AsImplemented.html</p>



<p><em>Usage Statistics of HTTP/2 for Websites, February 2022</em>. (o.&nbsp;J.). Abgerufen 5. Februar 2022, von https://w3techs.com/technologies/details/ce-http2</p>



<p><em>Was ist HTTP?</em> (o.&nbsp;J.). IONOS Digitalguide. Abgerufen 5. Februar 2022, von https://www.ionos.de/digitalguide/hosting/hosting-technik/was-ist-http/</p>



<h2 class="wp-block-heading">Download als PDF</h2>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div data-wp-interactive="core/file" class="wp-block-file"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/it211502_GansterLukas_HTTP3.pdf">it211502_GansterLukas_HTTP3</a><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/it211502_GansterLukas_HTTP3.pdf" class="wp-block-file__button" download>Herunterladen</a></div>
</div></div>
<p>The post <a href="https://mobile.fhstp.ac.at/development/die-zukunft-der-webentwicklung-http-3/">Die Zukunft der Webentwicklung: HTTP/3</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Echtzeitkommunikation mit socket.io</title>
		<link>https://mobile.fhstp.ac.at/allgemein/echtzeitkommunikation-mit-socket-io/</link>
		
		<dc:creator><![CDATA[Lukas Ganster]]></dc:creator>
		<pubDate>Wed, 22 Dec 2021 10:27:33 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[Socket.io]]></category>
		<category><![CDATA[websockets]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9313</guid>

					<description><![CDATA[<p>Will man Informationen in Echtzeit bereitstellen eigent sich dafür die JavaScript-Bibliothek socket.io. Wie diese grundlegend funktioniert und für welche Anwendungsgebiete sie besonders nützlich ist, wird in diesem Artikel anhand eines Beispiels erläutert.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/echtzeitkommunikation-mit-socket-io/">Echtzeitkommunikation mit socket.io</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-drop-cap">Will man Informationen möglichst in Echtzeit zwischen Client und Server austauschen, kann das Nachladen von Inhalten in Intervallen mittels Ajax manchmal unpraktisch sein. <strong>Socket.io</strong> ist eine Javascript-Bibliothek für Webanwendungen, die Echtzeitkommunikation zwischen Client und Server auf einfache Art und Weise ermöglicht. Sie besteht aus zwei Teilen: einer clientseitigen Bibliothek, die im Browser läuft, und einer serverseitigen Bibliothek für <strong>node.js</strong>. Beide Komponenten haben eine nahezu identische API. Ähnlich wie node.js ist die Bibliothek ereignisgesteuert und reagiert auf verschiedene Events.</p>



<p>Damit man Informationen als Client von einer Website bzw. einem Server aktualisieren kann, gibt es typischerweise drei unterschiedliche Vorgehensweisen:</p>

<ul>
<li>Vollständiges erneutes Laden aller Informationen</li>
<li>Nachladen von Inhalten mit AJAX</li>
<li>Regelmäßige Abfrage in Intervallen</li>
</ul>



<p>Diese Methoden haben alle ihre Anwendungsgebiete, werden aber spätestens dann unpraktisch, wenn Informationen möglichst schnell, am besten in Echtzeit, zur Verfügung stehen müssen. Hier schafft <strong>WebSockets</strong> Abhilfe, welches ein auf TCP basierendes Netzwerkprotokoll ist und parallel zur HTTP-Abfrage des Clients eine weitere Verbindung zum Server herstellt. <strong>Socket.io verwendet in erster Linie das WebSockets-Protokoll</strong> mit Polling über HTTP als Fallback-Option, falls das genannte Kommunikationsprotokoll nicht unterstützt wird. Die Bibliothek kann einfach als Wrapper für WebSockets verwendet werden, bietet aber darüber hinaus auch viele weitere Funktionen im Vergleich zu WebSockets, einschließlich Broadcasting an mehrere Sockets, speichern von Daten, die mit jedem Client verbunden sind, und asynchrones I/O.</p>



<h2 class="wp-block-heading">Wofür kann man socket.io verwenden?</h2>



<p>Die verschiedenen Anwendungsmöglichkeiten für socket.io lassen sich prinzipiell in vier Bereiche untergliedern:</p>



<ol class="wp-block-list"><li><strong>Benachrichtigungen </strong>&#8211; Wenn serverseitig ein Ereignis auftritt und der Client benachrichtigt werden muss, eignet sich der eventbasiertes Aufbau von socket.io besonders gut.</li><li><strong>Kommunikation</strong> &#8211; Nachrichten lassen sich mit einer geringen Serverlast und einer schneller Durchlaufzeit versenden, da nur dann Informationen geladen werden, wenn dies erforderlich ist. Besonders hier ist die Broadcast-Option von socket.io praktisch.</li><li><strong>Spiele</strong> &#8211; Ebenfalls bietet sich die Bibliothek für Echtzeit-Online-Spiele an, um beispielsweise Positionen von Spielfiguren zu synchronisieren.</li><li><strong>Steuerung</strong> &#8211; Die Steuerung von Microcontrollen bzw. Sensoren ist auch eine gute Anwendungsmöglichkeit dieser JavaScript-Bibliothek.</li></ol>



<h2 class="wp-block-heading">Installation über npm</h2>



<p>Die offizielle Implementierung der serverseitigen Bibliothek setzt auf node.js als Framework auf. Von der Community gibt es aber auch Implementierungen in Python, C++ oder Java. Um das Package von socket.io für seine Node-Projekt verwenden zu können, muss man ein neues Projekt anlegen und in diesem Verzeichnis in der Konsole einfach<code> npm install socket.io</code> eingeben, um die Installation zu starten.</p>



<h2 class="wp-block-heading">How To</h2>



<p>Um einen einfachen Überblick zu bekommen, wie genau die Client-Server-Kommunikation mit socket.io funktioniert, lässt sich am besten mit einem einfachen Beispiel illustrieren.</p>



<p><strong>Serverseitiger Code</strong> &#8211; server.js</p>



<pre class="wp-block-code"><code>// Kleiner HTTP-Server auf Port 8080
var app = require('http').createServer(serveStaticIndex).listen(8080);
 
// Laden von Socket.io
//(Gibt für die Demo nur Fehler/Warnungen auf der Konsole aus)
var io = require('socket.io').listen(app).set('log level', 1);
 
// Zugriff auf das Dateisystem (zum Ausliefern der index.html)
var fs = require('fs');
 
// Liefert die Startseite aus
function serveStaticIndex(req, res) {
  var fileStream = fs.createReadStream(__dirname + '/index.html');
      res.writeHead(200);
      fileStream.pipe(res);
}
 
// Socket.io-Events
io.sockets.on('connection', function (socket) {
  console.log('&#091;socket.io] Ein neuer Client (Browser) hat sich verbunden.\n');
 
  console.log('&#091;socket.io] SENDE "welcome"-Event an den Client.\n');
  socket.emit('welcome', "Hello world");
 
  socket.on('user agent', function (data) {
    console.log('&#091;socket.io] EMPFANGE "user agent"-Event vom Client:');
    console.log(data, '\n');
  });
});</code></pre>



<p><strong>Code für den Client </strong>&#8211; index.html</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Socket.io Test&lt;/title&gt;
 
  &lt;!-- Dieses Script wird von Socket.io automatisch zu Verfügung gestellt --&gt;
  &lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;
 
  &lt;script&gt;
    // Mit dem Socket.io-Server verbinden
    var socket = io.connect('http://localhost');
 
    // Warten auf Nachrichten
    socket.on('welcome', function (data) {
      console.log('&#091;socket.io] "welcome"-Event vom Server empfangen:\n' + data);
 
      // Eigenen Event vom Client an den Server schicken
      socket.emit('user agent', navigator.userAgent);
    });
  &lt;/script&gt;
&lt;/head&gt;
 
&lt;body&gt;
&lt;/body&gt;
 
&lt;/html&gt;</code></pre>



<p>Viel mehr Code wird nicht benötigt, um die Funktionsweise von WebSockets bzw. der socket.io-Bibliothek zu demonstrieren. Zum Ausprobieren muss lediglich der Server mit <code>node server.js </code>gestartet werden, was anschließend den Server auf Port 8000 startet. Ruft man dann in seinem Browser die URL <code>http://localhost:8080/ </code>auf, kann man in der Entwickler-Konsole bzw. dem Terminal von Node beobachten, wie die übermittelten Nachrichten zwischen Client und Server ausgegeben werden.</p>



<h2 class="wp-block-heading">In a nutshell</h2>



<p>Die JavaScript-Bibliothek socket.io bietet eine unglaublich einfache Option, in seinen Projekten eine Echtzeitkommunikation umzusetzen. Vor allem das eventbasierte System und die breite Browserunterstützung machen dieses Werkzeug für viele Anwendungsbeispiele relevant. Wer mehr über die Bibliothek lernen will, wirft am besten einen Blick in die Dokumentation.</p>



<p><a href="https://socket.io/docs/v4/">https://socket.io/docs/v4/</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/echtzeitkommunikation-mit-socket-io/">Echtzeitkommunikation mit socket.io</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
