<?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 Fabian Gaugusch - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it211504/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it211504/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Sat, 02 Jul 2022 15:34:45 +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 Fabian Gaugusch - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it211504/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Artificial Creativity &#8211; Summer School 2022</title>
		<link>https://mobile.fhstp.ac.at/allgemein/artificial-creativity-summer-school-2022/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Sat, 02 Jul 2022 15:29:03 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10170</guid>

					<description><![CDATA[<p>Dieser Blogeintrag dient dazu, nocheinmal Revue zum Workshop &#8220;Artficial Creativity&#8221; der Summer School 2022 passieren zu lassen. Darin wurde nach langem Vorbereiten und Durchplanen der Ideen eine interaktive Landschaft geschaffen, in deren Objekte die virtuelle und physische Realität miteinander verschwimmen lassen. Das fertige Werk trägt den Titel &#8220;AI Ruins (Of) The Future&#8221;. Darin können Besucherinnen <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/artificial-creativity-summer-school-2022/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/artificial-creativity-summer-school-2022/">Artificial Creativity &#8211; Summer School 2022</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dieser Blogeintrag dient dazu, nocheinmal Revue zum Workshop &#8220;Artficial Creativity&#8221; der Summer School 2022 passieren zu lassen. Darin wurde nach langem Vorbereiten und Durchplanen der Ideen eine interaktive Landschaft geschaffen, in deren Objekte die virtuelle und physische Realität miteinander verschwimmen lassen. Das fertige Werk trägt den Titel &#8220;AI Ruins (Of) The Future&#8221;. Darin können Besucherinnen und Besucher verschiendste mithilfe von AI erstellte Objekte beobachten, die sinnhaft an eine verlorene Zivilisation erinnern. Auch das Sound Design wurde so gestaltet, dass einzelne Objekte und &#8220;Gebäude&#8221; ihre eigenen auditiven Charakteristiken haben, die sich von den benachbarten unterscheiden.</p>



<p>Das Kunstwerk stellt die immer kleiner werdenden Ränder zwischen Mensch und Maschine, Realität und Simulation, Fakt und Fiktion. Auch die Diskussionen rund um das Thema bezogen sich hauptsächlich auf genau diese Themen und wurden ausführlich besprochen.</p>



<p>Für die Erstellung des Werkes wurden sowohl im Audio- als auch Videobereich Programme verwendet, die sich aus verschiedensten Gründen Machine Learning Modelle zur Hilfe genommen haben, um ihren NutzerInnen beim Ausleben ihrer kreativen Ziele unterstützen können. </p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/07/image-1540x800.jpg" alt="" class="wp-image-10171" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-770x400.jpg 770w" sizes="(max-width: 1540px) 100vw, 1540px" /></figure>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/07/image-1-1540x800.jpg" alt="" class="wp-image-10172" width="840" height="436" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-1-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-1-770x400.jpg 770w" sizes="(max-width: 840px) 100vw, 840px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/07/image-2-1540x800.jpg" alt="" class="wp-image-10173" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-2-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-2-770x400.jpg 770w" sizes="(max-width: 1540px) 100vw, 1540px" /></figure>



<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/07/image-3-1540x800.jpg" alt="" class="wp-image-10174" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-3-1540x800.jpg 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/image-3-770x400.jpg 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>



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



<p><strong>Sound Design<br></strong>Christoph Fuchs<br>Fabian Gaugusch<br>Thomas Klein<br>Manuel Schumach</p>



<p><strong>Visual Design<br></strong>Anna Schürmann<br>Felix Hadi<br>Lena Kernstock<br>Michael Stidl<br>Theresa Neurauter</p>



<p><strong>Lecturers</strong><br>Andrew Blanton<br>Clara Blume<br>Michael Iber</p>



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



<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/07/9d39c2ca-c2e6-429e-b08e-0ab714ec6c5c.jpg" alt="" class="wp-image-10175" width="427" height="427" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/9d39c2ca-c2e6-429e-b08e-0ab714ec6c5c.jpg 400w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/9d39c2ca-c2e6-429e-b08e-0ab714ec6c5c-150x150.jpg 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2022/07/9d39c2ca-c2e6-429e-b08e-0ab714ec6c5c-120x120.jpg 120w" sizes="auto, (max-width: 427px) 100vw, 427px" /><figcaption><a href="https://newart.city/show/ai-ruins">https://newart.city/show/ai-ruins</a></figcaption></figure>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/artificial-creativity-summer-school-2022/">Artificial Creativity &#8211; Summer School 2022</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Nutzung der Spotify API in einem Projekt</title>
		<link>https://mobile.fhstp.ac.at/allgemein/nutzung-der-spotify-api-in-einem-projekt/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Mon, 27 Jun 2022 17:16:59 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10157</guid>

					<description><![CDATA[<p>Einleitung In diesem Blogeintrag werde ich Schritt für Schritt erklären, wie man sich bei der API von Spotify autorisiert und somit Zugang zu verschiedensten Datenquellen des Musikanbieters bekommt. Spotify Access Token Zuerst müssen sich EntwicklerInnen auf der Website Spotify for Developers mit ihren regulären Spotify Nutzerdaten anmelden und anschließend unter dem Reiter &#8220;Dashboard&#8221; eine neue <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/nutzung-der-spotify-api-in-einem-projekt/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/nutzung-der-spotify-api-in-einem-projekt/">Nutzung der Spotify API in einem Projekt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Einleitung</h2>



<p>In diesem Blogeintrag werde ich Schritt für Schritt erklären, wie man sich bei der API von Spotify autorisiert und somit Zugang zu verschiedensten Datenquellen des Musikanbieters bekommt.</p>



<h2 class="wp-block-heading">Spotify Access Token</h2>



<p>Zuerst müssen sich EntwicklerInnen auf der Website <a href="https://developer.spotify.com/dashboard/applications">Spotify for Developers</a> mit ihren regulären Spotify Nutzerdaten anmelden und anschließend unter dem Reiter &#8220;Dashboard&#8221; eine neue App registrieren.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="503" height="605" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-4.png" alt="" class="wp-image-10158" /><figcaption>Erstellen einer neuen Applikation</figcaption></figure>



<p>Der Appname sollte aus Gründen der Einfachheit gleich dem Namen der geplanten Applikation sein, kann aber auch irgendwas sein. Nach dem Erstellen landet man auf der Übersichtsseite der neuen App, in der man später Einsicht über verschiedenste Datenvisualisierungen der Applikation bekommt.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1540" height="792" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-5-1540x792.png" alt="" class="wp-image-10159" /></figure>



<p>Ganz wichtig sind hier die beiden Keys &#8220;Client ID&#8221; und &#8220;Client Secret&#8221;. Diese werden später für das Autorisieren der NutzerIn benötigt. Im Code kann es sich nun um eine simple Front-End-Applikation halten, in der die Requests durchgeführt werden. </p>



<p>Zur Hilfe kann hier die Library <a href="https://github.com/thelinmichael/spotify-web-api-node">Spotify-Web-Api-Node</a> verwendet werden, die den Autorisierungsprozess erleichtert.</p>



<pre class="wp-block-code"><code>const credentials = {
    clientId: 'Deine Client ID',
    clientSecret: 'Dein Client Secret',
    redirectUri: 'localhost:xxx',
    scopes: &#091;
        'user-read-currently-playing',
        'user-read-recently-played',
        'user-read-playback-state',
        'user-top-read',
        'user-modify-playback-state',
        'streaming',
        'user-read-email',
        'user-read-private',
        'playlist-modify-private',
        'playlist-read-private',
    ],
    state: 'Dein State',
};</code></pre>



<p>Zunächst wird ein Javascript-Objekt definiert, welches nicht nur Client Id und Client Secret beinhaltet, sondern auch eine URL, auf die nach dem Autorisieren wieder zurückverwiesen wird und die Scopes, die NutzerInnen darüber informieren, welche Funktionen über deren Account sie innerhalb der zu schreibenden Applikation erlauben. </p>



<p>Mithilfe der zuvor genannten Library kann über die Methode createAuthorizeUrl() anhand der Credentials einfach ein Link zur Spotify-Autorisierungsseite generiert werden, die dann innerhalb der Webapplikation verlinkt werden kann.</p>



<pre class="wp-block-code"><code>const spotifyApi = new SpotifyWebApi(credentials);

const authorizationURL = spotifyApi.createAuthorizeURL(
    credentials.scopes,
    credentials.state
);</code></pre>



<p>Nun kann sich eine NutzerIn anhand diesen Links bei Spotify anmelden und wird wieder auf die definierte URL zurückgeleitet, wobei sie hier zusätzlich einen eine Stunde lang gültigen Access Token erhält. Dieser Token kann in der Applikation nun bei jedem Request im Header als Bearer-Token mitgesendet werden und die gewünschten Daten können abgefragt werden!</p>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/nutzung-der-spotify-api-in-einem-projekt/">Nutzung der Spotify API in einem Projekt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dall•E 2 &#8211; Künstliche Kreativität angewandt</title>
		<link>https://mobile.fhstp.ac.at/allgemein/dalle-2-kuenstliche-kreativitaet-angewandt/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Mon, 27 Jun 2022 16:19:19 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=10149</guid>

					<description><![CDATA[<p>Einleitung Das Thema Artificial Creativity befasst sich mit der Verwendung von künstlicher Intelligenz bei der Erschaffung verschiedenster kreativer Kreationen. Das konkrete Ziel ist es, menschliche Kreativität zu simulieren und/oder replizieren. Dies beinhaltet die Erforschung des Begriffes „Kreativität“ selbst und wie diese nachgeahmt werden kann. Ein weiterer Anwendungsbereich ist die Erschaffung eines Programmes oder einer Maschinerie, <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/dalle-2-kuenstliche-kreativitaet-angewandt/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/dalle-2-kuenstliche-kreativitaet-angewandt/">Dall•E 2 &#8211; Künstliche Kreativität angewandt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Einleitung</h2>



<p>Das Thema Artificial Creativity befasst sich mit der Verwendung von künstlicher Intelligenz bei der Erschaffung verschiedenster kreativer Kreationen. Das konkrete Ziel ist es, menschliche Kreativität zu simulieren und/oder replizieren. Dies beinhaltet die Erforschung des Begriffes „Kreativität“ selbst und wie diese nachgeahmt werden kann. Ein weiterer Anwendungsbereich ist die Erschaffung eines Programmes oder einer Maschinerie, welche Menschen dabei unterstützt, ihre Kreativität zu verbessern oder zu entdecken. </p>



<p>(What Is Computational Creativity (Artificial Creativity)?, n.d.) (“Computational Creativity,” 2022)</p>



<p>Das wohl erwähnenswerteste Beispiel gegenwärtiger Entwicklungen im Bereich Artificial Creativity ist das zuvor angeführte AI-System „Dall-E 2“. (<a href="https://openai.com/dall-e-2/" target="_blank" rel="noreferrer noopener">Link</a>) Dabei handelt es sich um ein Programm, welches realistisch aussehende Bilder und Kunstwerke anhand einer Vorgabe kreieren kann. Dabei können sehr spezifische Vorgaben an das System gemacht werden, die alle bei der Erstellung der Kunstwerke berücksichtigt werden. Nicht das erwartete Bild, sondern auch Positionen der einzelnen Elemente darin oder der nachzuahmende Zeichenstil können dabei definiert werden. Das Programm kreiert darauf folgend mehrere individuelle Bilder, um noch näher an genau das von der NutzerIn erwartete Bild heranzukommen.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1487" height="796" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-4.jpg" alt="" class="wp-image-10150" /><figcaption>Beispielbilder aus der Website von Dall E 2 (1)</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1481" height="780" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-4-1.jpg" alt="" class="wp-image-10151" /><figcaption> Beispielbilder aus der Website von Dall E 2 (2)</figcaption></figure>



<p>Ein weiterer Anwendungsbereich von Dall-E 2 ist das Editieren existierender Bilder. Auch hier versteht das System die Relationen von Objekten zueinander, sowie deren Schatten, Texturen und Reflektionen. Mithilfe von Dall-E 2 können so<br>Elemente aus Bildern entfernt und hinzugefügt, vergkleinert oder vergrößert werden und vieles mehr. (DALL·E 2, n.d.)<br>Grundlegende Programmlogik des Systems basiert hauptsächlich auf einem im April 2022 veröffentlichten Paper, betitelt „Hierarchical Text-Conditional Image Generation with CLIP Latents“. (Ramesh et al., 2022)</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/06/image-4-2.jpg" alt="" class="wp-image-10152" width="840" height="446" /><figcaption>  Beispielbilder aus der Website von Dall E 2 (3)</figcaption></figure>



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



<p>Dies waren nur zwei der vielen Features, die Dall-E 2 NutzerInnen zur Verfügung stellt. Momentan handelt es sich dabei nur um ein fortlaufendes Forschungsprojekt, welches zu diesem Zeitpunkt noch nicht öffentlich zugänglich ist. Doch eines ist ganz klar: Nach Dall-E 2&#8217;s Veröffentlichung wird die Welt der künstlichen Kreativität einen neuen Grundpfeiler haben, der große Wellen schlagen wird.</p>



<p></p>



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



<p>Computational creativity. (2022). In Wikipedia. https://en.wikipedia.org/w/index.php?title=Computational_creativity&amp;oldid=1085146887</p>



<p>DALL·E 2. (n.d.). OpenAI. Retrieved June 8, 2022, from https://openai.com/dall-e2/</p>



<p><br>Ramesh, A., Dhariwal, P., Nichol, A., Chu, C., &amp; Chen, M. (2022). Hierarchical<br>Text-Conditional Image Generation with CLIP Latents (arXiv:2204.06125). arXiv.<br>https://doi.org/10.48550/arXiv.2204.06125</p>



<p><br>What is computational creativity (artificial creativity)? &#8211; Definition from WhatIs.com.<br>(n.d.). WhatIs.Com. Retrieved June 8, 2022, from<br>https://www.techtarget.com/whatis/definition/computational-creativity</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/dalle-2-kuenstliche-kreativitaet-angewandt/">Dall•E 2 &#8211; Künstliche Kreativität angewandt</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ESLint &#8211; Segen oder Fluch?</title>
		<link>https://mobile.fhstp.ac.at/allgemein/eslint-segen-oder-fluch/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Tue, 07 Jun 2022 09:58:37 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9960</guid>

					<description><![CDATA[<p>Einführung Wahrscheinlich stand im Laufe des Bachelor-/ oder Masterstudiums jeder von uns schon mindestens einmal vor dem Problem, dass ESLint oder der sogenannte &#8220;Linter&#8221; den Entwicklungsprozess verlangsamt hat, da bestimmte Syntax nicht als valide galt und so der Code nicht ausgeführt werden konnte. Dies führt bei ProgrammierInnen (wie mir selbst) oft zu mehr Kopfschmerzen als <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/eslint-segen-oder-fluch/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/eslint-segen-oder-fluch/">ESLint &#8211; Segen oder Fluch?</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Einführung</h2>



<p>Wahrscheinlich stand im Laufe des Bachelor-/ oder Masterstudiums jeder von uns schon mindestens einmal vor dem Problem, dass ESLint oder der sogenannte &#8220;Linter&#8221; den Entwicklungsprozess verlangsamt hat, da bestimmte Syntax nicht als valide galt und so der Code nicht ausgeführt werden konnte. Dies führt bei ProgrammierInnen (wie mir selbst) oft zu mehr Kopfschmerzen als das eigentlich zu lösende Problem. Doch was genau ist ESLint überhaupt und wieso sollte sich jede DeveloperIn die Zeit nehmen, um das Tool zu verstehen und zu meisten?</p>



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



<p>ESLint ist eines von einer Reihe an &#8220;Linting&#8221;-Tools, welches dabei helfen soll, schöneren und richtigeren Code zu schreiben. Der Begriff &#8220;to lint/etwas linten&#8221; beschreibt den Vorgang der statischen Code-Analyse von einem Tool und kommt vom englischen Begriff &#8220;Fussel&#8221;. ESLint speziell wurde von Nicholas C. Zakas entwickelt und im Juni 2013 veröffentlicht. Bei dem Tool handelt es sich konkret um einen JavaScript-Linter, welcher nicht nur TypeScript und ECMAScript 2015 unterstützt, sondern in den letzten Jahren auch die Syntax von beliebten JavaScript-Frameworks wie Vue oder React analysieren kann. (https://eslint.org/docs/about/)</p>



<p>Heute ist ESLint der weltweit verbreitetste JavaScript-Linter und hatte am 29. Mai 2022 über 24,000,000 wöchentliche Downloads.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1288" height="646" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image.png" alt="" class="wp-image-9961" /><figcaption>@typescript-eslint/eslint-plugin vs eslint vs jshint vs jslint vs tslint | npm trends</figcaption></figure>



<p>Das Hauptziel von ESLint ist es, EntwicklerInnen in sowohl kleinen als auch großen Projekten/Gruppen dabei zu helfen, einen einheitlichen Code-Styleguide einzuhalten. Dies beinhaltet unter vielen anderen Regeln die einheitliche Verwendung von einfachen oder regulären Anführungszeichen, eine maximale Zeichenanzahl pro Codezeile oder die Einhaltung ausgewählter Namenskonventionen (Camel Case, Pascal Case, &#8230;). (https://eslint.org/docs/rules/)</p>



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



<p>Durch seine Popularität ist ESLint heute in so gut wie jeder beliebten Entwicklungsumgebung zu finden. Visual Studio Code bietet ESLint als Plugin an, welches in jedem Projekt individuell konfiguriert werden kann. Auch die diversen IDEs des bekannten Softwareunternehmens Jetbrains (IntelliJ IDEA, PhpStorm, Webstorm, etc.) bieten unterstützung für das Analysetool an. (https://de.wikipedia.org/w/index.php?title=ESLint&amp;oldid=221828916)</p>



<h2 class="wp-block-heading">Funktionalität</h2>



<p>Die Funktionalität von ESLint scheint beim ersten Hinblick ja schön und gut zu sein, aber was genau ist es, das ESLint zu so einem hilfreichen Tool für EntwicklerInnen macht? Ähnlich wie TypeScript hilft ESLint dabei, Fehler schon während des Schreibens von Code ausfindig zu machen, anstatt diese erst während der Runtime nach Starten des Programms finden zu können. Folgendes simples Beispiel demonstriert einen Anwendungsfall:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="717" height="102" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-1.png" alt="" class="wp-image-9962" /><figcaption>ESLint Anwendungsbeispiel 1</figcaption></figure>



<p>In dem gezeigten Beispiel wird die Konstante &#8220;test&#8221; zwei mal deklariert, was der Javascript-Engine nicht passt und diese durch den Fehler während der Laufzeit abbrechen lassen wird.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="711" height="162" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-2.png" alt="" class="wp-image-9963" /><figcaption> ESLint Anwendungsbeispiel 2</figcaption></figure>



<p>Bei richtig eingestellen ESLint-Regeln wird dieses Codeschnipsel jedoch schon in der Entwicklungsumgebung als fehlerhaft markiert und der Code lässt sich bis zur Behebung nicht ausführen. Innerhalb dieses drei-zeiligen Beispiels ist der Fehler natürlich schnell und leicht ausfindig zu machen, in größeren Applikationen können sich jedoch schnell unbemerkte Fehler einbauen, die ohne Hilfstools wie ESLint teils gar nicht leicht zu finden sind.</p>



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



<p>Was ESLint von andern, nicht so beliebten Lintern unterscheidet, ist seine große Auswahl an genauestens individualisierbaren Regeln. So können Styleguides von allen EntwicklerInnen eines Teams streng eingehalten werden und alle Beteiligten bemerken schon während des Verfassen ihres Codes, wenn der Code nicht den definierten Regeln entspricht.</p>



<p>Regeln für ESLint können auf zwei generelle Wege innerhalb eines Projektes konfiguriert werden. Zum Einen anhand von Konfigurationskommentaren und zum Anderen anhand von Dateien, in denen die Auflistung der Linterregeln definiert ist. Da der Überblick über alle Regeln innerhalb einer Datei viel übersichtlicher ist, wird diese Methode meist von EntwicklerInnen bevorzugt. Diese Regeln sind im Normalfall durch ein simples JSON oder YAML-File definiert.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1071" height="165" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/06/image-3.png" alt="" class="wp-image-9964" /><figcaption>ESLint Konfigurationsdatei</figcaption></figure>



<p>Wichtig ist auch noch die Möglichkeit, Regeln temporär oder global &#8220;auszuschalten&#8221;, da es immer wieder auch dazu kommen kann, dass Regeln projektübergreifend nicht 100 prozentig eingehalten werden können. (https://eslint.org/docs/user-guide/configuring/rules)</p>



<h2 class="wp-block-heading">Probleme mit ESLint</h2>



<p>Die bisherig angeführten Punkte beschreiben das Ziel der Verwendung von ESLint und beleuchten auch nur simple oder sogenannte &#8220;best case scenarios&#8221;. Leider muss erwähnt werden, dass die korrekte Verwendung von ESLint keine leichte ist und das Tool oft mehr Probleme macht als es zu lösen versucht.</p>



<p>Damit ist gemeint, dass sich ProgrammiererInnen schnell von dem Tool eingeschränkt fühlen können, da die definierten Regeln strikt eingehalten werden müssen. Dies führt dazu, dass Code in der Developmentphase, beim &#8220;Heranarbeiten&#8221; an die korrekte Lösung oft nicht ausführbar ist, da er nicht dem erwarteten Format entspricht.</p>



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



<p>Generell lässt sich ESLint meiner Meinung nach in eine ähnliche Kategorie wie TypeScript stecken. Beide Tools bieten EntwicklerInnen einige Möglichkeiten, schönen und fehlerfreien Code effizienter zu verfassen. Jedoch benötigen beide Tools auch gewissen Aufwand um ihr volles Potential zu entfalten. </p>



<p></p>



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



<p><em>About</em>. (n.d.). ESLint &#8211; Pluggable JavaScript Linter. Retrieved June 7, 2022, from https://eslint.org/docs/about/</p>



<p>ESLint. (2022). In <em>Wikipedia</em>. https://de.wikipedia.org/w/index.php?title=ESLint&amp;oldid=221828916</p>



<p><em>Rules</em>. (n.d.-a). ESLint &#8211; Pluggable JavaScript Linter. Retrieved June 7, 2022, from https://eslint.org/docs/rules/</p>



<p><em>Rules</em>. (n.d.-b). ESLint &#8211; Pluggable JavaScript Linter. Retrieved June 7, 2022, from https://eslint.org/docs/user-guide/configuring/rules</p>



<p><em>@typescript-eslint/eslint-plugin vs eslint vs jshint vs jslint vs tslint | npm trends</em>. (n.d.). Retrieved June 7, 2022, from https://www.npmtrends.com/jslint-vs-jshint-vs-eslint-vs-tslint-vs-@typescript-eslint/eslint-plugin</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/eslint-segen-oder-fluch/">ESLint &#8211; Segen oder Fluch?</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Erste Schritte mit Next.js</title>
		<link>https://mobile.fhstp.ac.at/allgemein/erste-schritte-mit-next-js/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Tue, 22 Feb 2022 17:03:53 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9591</guid>

					<description><![CDATA[<p>Was ist Next.js? Next.js ist ein auf React basierendes Javascript-Framework, welches zur Entwicklung von Single-Page-Applikationen verwendet wird. Next.js wurde im Oktober 2016 erstmals von Guillermo Rauch und dem Entwicklerteam seines Unternehmens, Vercel, als Open-Source-Projekt auf Github veröffentlicht. Das Ziel des Frameworks ist es, die Features und Möglichkeiten, die React bietet, um einige weitere Funktionalitäten auzubauen <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/erste-schritte-mit-next-js/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erste-schritte-mit-next-js/">Erste Schritte mit Next.js</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Was ist Next.js?</h1>



<p>Next.js ist ein auf React basierendes Javascript-Framework, welches zur Entwicklung von Single-Page-Applikationen verwendet wird. Next.js wurde im Oktober 2016 erstmals von Guillermo Rauch und dem Entwicklerteam seines Unternehmens, Vercel, als Open-Source-Projekt auf Github veröffentlicht. Das Ziel des Frameworks ist es, die Features und Möglichkeiten, die React bietet, um einige weitere Funktionalitäten auzubauen und sowohl den Entwicklungsprozess als auch die User Experience der damit erstellten Webapplikation zu verbessern. Zu diesen erweiterten Funktionalitäten zählen unter anderem Server-Side-Rendering (SSR), Static Site Generation (SSG), eingebautes auf der Ordnerstruktur basierendes Routing, die simple Erstellung von API-Endpoints oder optimiertes Code-Splitting und Bundling. (“Next.Js,” 2022)</p>



<p>In diesem Blogeintrag werden einige interessante und spannende Features von Next.js angeführt und genauer untersucht.</p>



<h2 class="wp-block-heading">Server-Side-Rendering vs. Client-Side-Rendering</h2>



<h3 class="wp-block-heading">Server-Side-Rendering</h3>



<p>In den früheren Tagen des Internets war Server-Side-Rendering der verbreitetste Weg, um einer Nutzer:in eine HTML-Seite in ihrem Browser zeigen zu können. Dafür wurde eine statische HTML-Seite auf einem Server gespeichtert, welche dann anhand einer Request an den Server an die Nutzer:in weitergegeben wurde.</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;title&gt;Example Website&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;My Website&lt;/h1&gt;
    &lt;p&gt;This is an example of my new website&lt;/p&gt;
    &lt;a href="http://example.testsite.com/other.html."&gt;Link&lt;/a&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre>



<p>Wollte die Nutzer:in nun auf eine andere Seite navigieren, wurde erneut eine Request an den Server gesendet und die vollständige Seite wurde erneut weitergegeben, auch wenn der Inhalt der Seite fast der gleiche, wie der der ersten Seite war (z.B.: das HTML, welches seitenübergreifend das Menü der Webseite darstellen soll).</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;title&gt;Example Website&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;My Website&lt;/h1&gt;
    &lt;p&gt;This is an example of my new website&lt;/p&gt;
    &lt;p&gt;This is some more content from the other.html&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre>



<p>Die beiden oben gezeigten Beispiele einer simplen HTML-Seite unterscheiden sich in nur einer Code-Zeile. Obwohl sich für die Nutzer:in nur dieser eine Text ändert, wird trotzdem der ganze Seiteninhalt erneut geladen, anstatt nur den geänderten Teil der Seite neu zu laden. (Malagi, n.d.)</p>



<h3 class="wp-block-heading">Client-Side-Rendering</h3>



<p>Heutzutage sind Webseiten mehr vollständige Applikationen, die im Browser dargestellt werden, als simple statische Seiten. Oft beinhalten sie mehrere hunderte oder sogar tausende Zeilen Code, welche beim Server-seitigen Laden bei jeder Änderung der Seite erneut geladen werden müssten.</p>



<p>Moderne Frameworks wie der Grundstein von Next.js, React, oder Vue machen sich das Client-Side-Rendering zunutze, um den jeweilig gewünschten Seiteninhalt mithilfe von Javascript in einer einzigen „leeren“ HTML-Datei anzeigen zu können.</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"&gt;
    &lt;meta name="theme-color" content="#000000"&gt;
    &lt;link rel="manifest" href="%PUBLIC_URL%/manifest.json"&gt;
    &lt;link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"&gt;
    &lt;title&gt;React App&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;noscript&gt;
      You need to enable JavaScript to run this app.
    &lt;/noscript&gt;
    &lt;div id="root"&gt;&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre>



<p>Der Vorteil dieser Methode ist, dass nun beim Aufruf einer neuen Unterseite oder dem Verändern von Daten auf der momentanen Seite kein neuer Request an den Server gemacht wird, sondern der Inhalt effizient mithilfe des Javascripts des verwendeten Frameworks ersetzt oder verändert wird. (<em>Client-Side vs. Server-Side Rendering</em>, 2017)</p>



<p>Aber auch das Client-Side-Rendering bringt gewisse Nachteile mit sich, wie zum Beispiel der Search-Engine-Optimization der Applikation. Da die Seite initial noch keinen Inhalt hat, sondern ohne Ausführung des Javascript-Codes nur eine leere HTML-Seite ist, kann diese von Search-Engine Bots gar nicht beziehungsweise nur schwer aufgefunden werden. Weiters leidet unter Umständen auch die Ladezeit der Applikation unter Verwendung von Client-Side-Rendering, da erst das vollständige Javascript geladen werden muss, um den ersten Seiteninhalt anzeigen zu können.</p>



<p>Im folgenden Bereich sind noch einmal zusammenfassend die jeweiligen Vor- und Nachteile von Client-Side-Rendering und Server-Side-Rendering angeführt</p>



<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">
<h4 class="wp-block-heading">Server-Side-Rendering </h4>



<h5 class="wp-block-heading">Vorteile</h5>



<ul class="wp-block-list"><li>Bessere SEO</li><li>Schnellere erstmalige Ladezeiten</li><li>Performanter bei statischen Seiten</li></ul>



<p></p>



<h5 class="wp-block-heading">Nachteile</h5>



<ul class="wp-block-list"><li>Vermehrte Server-Requests</li><li>Langsamere Ladezeiten im Gesamten</li><li>Vollständige Seitenreloads</li><li>Viel Seiteninteraktion nicht vorteilhaft</li></ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h4 class="wp-block-heading"> Client-Side-Rendering</h4>



<h5 class="wp-block-heading">Vorteile</h5>



<ul class="wp-block-list"><li>Sehr performante Seiteninteraktionen möglich</li><li>Schnelles Updaten/Laden nach erstem Laden der Seite</li><li>Vorteilhaft für interaktive Webapplikationen</li><li>Entwicklungsunterstützung durch Frameworks</li></ul>



<h5 class="wp-block-heading">Nachteile</h5>



<ul class="wp-block-list"><li>SEO schlecht bis gar nicht unterstützt</li><li>Langsame erstmalige Ladezeit</li><li>Meist nicht ohne externe Library umsetzbar</li></ul>
</div>
</div>



<p>(<em>Client-Side vs. Server-Side Rendering</em>, 2017)</p>



<h3 class="wp-block-heading">Server-Side-Rendering mit Next.js</h3>



<p>Innerhalb einer React-Komponente eines Next.js Projektes kann eine Funktion namens &#8220;getServerSideProps&#8221; exportiert werden. </p>



<pre class="wp-block-code"><code>export async function getServerSideProps(context) {
  return {
    props: {}, // will be passed to the page component as props
  }
}</code></pre>



<p>Diese Methode läuft außschließlich auf dem Server und nie im Browser der Nutzer:in. Wird eine Seite, die eine solche Funktion exportiert aufgerufen, wird &#8220;getServerSideProps&#8221; zum Zeitpunkt der Request aufgerufen und die Seite wird am Server vorgerendert. Die vollständig geladene Seite wird nun an die Nutzer:in geschickt. </p>



<p>Diese Methode kann optional in einzelne Komponenten eingebaut werden und hilft Entwickler:innen, ein optimales und performantes Nutzererlebnis bieten zu können. (<em>Data Fetching</em>, n.d.)</p>



<p></p>



<p></p>



<h2 class="wp-block-heading">Dateisystem-basiertes Routing</h2>



<p>Auch hier unterscheidet sich Next.js von ursprünglichem React, indem das Framework ein eigenes, einfach verständliches Routing-System integriert hat. Bei einem regulären React-Projekt muss eine externe Library, wie zum Beispiel der weitgehend bekannte React-Router eingebunden werden. Im folgenden Abschnitt werden die Grundideen des Next.js-Routers erläutert.</p>



<h3 class="wp-block-heading">Index, Nested und Dynamic Routes</h3>



<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:33.33%">
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/Screenshot-2022-02-22-180552-634x800.png" alt="" class="wp-image-9609" width="282" height="354" /><figcaption>Next.js Routing über Ordnerstruktur</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>Das links zu sehende Beispiel visualisiert eine grundlegende Routing-Struktur im Next.js-Projekt. Das hier wichtigste Verzeichnis heißt &#8220;pages&#8221; und beinhaltet alle Views als einzelne .js oder .ts-Dateien. </p>



<p>Eine Javascript-Komponente im Hauptverzeichnis kann direkt unter &#8220;/Dateiname&#8221; über den Browser erreicht werden. </p>



<p>Genau so simpel verhalten sich eingebettete Routen. Hier wird zuerst ein neuer Ordner mit dem Namen der Hauptroute erstellt, dann kann darin über den Namen des Ordners auf die Komponente mit dem Namen &#8220;index.js&#8221; zugegriffen werden. Jede weitere darunter liegende Komponente wird in den selben Ordner platziert und kann unter &#8220;/Ordnername/Dateiname&#8221; erreicht werden.</p>



<p>Dynamisch generierte Routen werden in Next.js anhand einer eckigen Klammer um den Dateinamen erstellt. Nun kann innerhalb der Komponente über eine Router-Hook auf die Information in der URL zugegriffen werden und zum Beispiel eine Datei und deren Inhalte mit der zugehörigen ID aus einer Datenbank geladen werden.</p>
</div>
</div>



<p>(<em>Routing</em>, n.d.)</p>



<h1 class="wp-block-heading">Fazit</h1>



<p>Next.js stellt als Superset von React ein Framework dar, welches Reacts Horizont an Möglichkeiten direkt erweitert. Für eine Entwickler:in kann Next.js mit Typescript verglichen werden, da es wie bei Typescript und Javascript bereits ein umfangreiches Wissen bezüglich dem React-Framework voraussetzt. Der zusätzliche Lernaufwand macht sich aber schnell bemerkbar und lässt React neue, zuvor nicht erreichbare Höhen erreichen. </p>



<p>In diesem Blogeintrag bin ich nur auf ein paar der vielen erweiterten Funktionen eingegangen, um einen ersten Einblick in das Framework zu bieten. Natürlich bleibt es abzuschätzen, ob ein Softwareprojekt Gebrauch von diesen Features machen kann, jedoch ist es definitiv die Zeit wert, sich näher mit dem Framework zu beschäftigen.</p>



<p>Weitere Informationen und eine ausführliche Dokumentation zu den erwähnten Features und vielen mehr sind in der <a href="https://nextjs.org/docs/getting-started" target="_blank" rel="noreferrer noopener">Next.js-Dokumentation</a> zu finden.</p>



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



<p><em>Client-side vs. server-side rendering: Why it’s not all black and white</em>. (2017, February 28). FreeCodeCamp.Org. https://www.freecodecamp.org/news/what-exactly-is-client-side-rendering-and-hows-it-different-from-server-side-rendering-bd5c786b340d/</p>



<p><em>Data Fetching: GetServerSideProps | Next.js</em>. (n.d.). Retrieved February 22, 2022, from https://nextjs.org/docs/basic-features/data-fetching/get-server-side-props</p>



<p>Malagi, S. (n.d.). <em>Server-Side Rendering VS. Client-Side Rendering</em>. Retrieved February 22, 2022, from https://www.clariontech.com/blog/server-side-rendering-vs.-client-side-rendering</p>



<p>Next.js. (2022). In <em>Wikipedia</em>. https://en.wikipedia.org/w/index.php?title=Next.js&amp;oldid=1072970217</p>



<p><em>Routing: Introduction | Next.js</em>. (n.d.). Retrieved February 22, 2022, from https://nextjs.org/docs/routing/introduction</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erste-schritte-mit-next-js/">Erste Schritte mit Next.js</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Einführung in Progressive Web Apps</title>
		<link>https://mobile.fhstp.ac.at/allgemein/einfuehrung-in-progressive-web-apps/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Thu, 20 Jan 2022 14:14:21 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9332</guid>

					<description><![CDATA[<p>In der Welt der mobilen Applikationen stehen sich schon seit Jahren zwei Fronten gegenüber. Zum einen kann eine Applikation im Web veröffentlicht werden, und dann über den Browser am mobilen Endgerät benutzt werden, zum anderen lassen sich Applikationen auch nativ für iOS und Android entwickeln, welche dann über den jeweiligen Appstore heruntergeladen werden können. Beide <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/einfuehrung-in-progressive-web-apps/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/einfuehrung-in-progressive-web-apps/">Einführung in Progressive Web Apps</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der mobilen Applikationen stehen sich schon seit Jahren zwei Fronten gegenüber. Zum einen kann eine Applikation im Web veröffentlicht werden, und dann über den Browser am mobilen Endgerät benutzt werden, zum anderen lassen sich Applikationen auch nativ für iOS und Android entwickeln, welche dann über den jeweiligen Appstore heruntergeladen werden können. Beide Methoden haben ihre Vor- und Nachteile, was bei größeren Projekten oft dazu führt, dass eine Applikation sowohl für das Web als auch nativ für Android und/oder iOS entwickelt wird. Dies führt natürlich zu einem großen Aufwand an Zeit und folgedessen auch Geld, da drei verschiedene Softwareprojekte umgesetzt werden müssen, um allen Nutzerinnen und Nutzern das gleiche Erlebnis bieten zu können. Für die Lösung dieses Problems wurden auch schon einige Ideen umgesetzt, eine davon, die Progressive Web App, werde ich in diesem Artikel präsentieren.</p>



<p>Der Begriff Progressive Web App wurde erstmals im Jahr 2015 von Google Chrome Entwickler Alex Russel und Designer Frances Berriman geprägt und beschreibt ein modernes Konzept der Entwicklung von Webapplikationen. PWAs sollen einen Mix der besten Aspekte von klassischen responsiven Webseiten und nativen Applikationen darstellen. Russel und Berriman haben weiters einige Grundanforderungen an eine fertige Progressive Web App beschrieben.</p>



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



<ul class="wp-block-list"><li><strong>Responsiv:</strong> Das Design muss jedem Formfaktor entsprechen.</li><li><strong>Konntektivitätsunabhängigkeit:</strong> Durch die Unterstützung von Service Workern auch offline nutzbar.</li><li><strong>App-ähnliche Interaktionen:</strong> Sowohl das Design als auch die Nutzbarkeit soll anhand einer App Shell an eine native App erinnern.</li><li><strong>Updated:</strong> Durch Service Worker stets am neuesten Stand.</li><li><strong>Sicher: </strong>Sicherer Datentransfer als Grundvoraussetzung.</li><li><strong>Auffindbar:</strong> Durch Aspekte einer Webseite mithilfe von Suchmaschinen auffindbar.</li><li><strong>Erneute Interaktion:</strong> Durch aus Apps bekannten PushBenachrichtigungen wird die User-Interaktion gefördert.</li><li><strong>Installierbar: </strong>Kann über den Webbrowser auf dem mobilen Gerät heruntergeladen werden und im Homescreen per Icon erreicht werden.</li><li><strong>Verlinkbar:</strong> Durch den Zugang über den Webbrowser leicht per URL zu verlinken.</li></ul>



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



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="160" height="355" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/01/Picture2.png" alt="" data-id="9333" class="wp-image-9333" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="160" height="355" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/01/Picture3.png" alt="" data-id="9334" class="wp-image-9334" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="160" height="355" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/01/Picture4-1.png" alt="" data-id="9337" data-full-url="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/01/Picture4-1.png" data-link="https://akirchknopf-21110.php.fhstp.cc/?attachment_id=9337" class="wp-image-9337" /></figure></li></ul></figure>



<p>Das Installieren einer PWA läuft gleich über den Browser, in dem die PWA aufgerufen wurde und ist sehr simpel gehalten. Die NutzerIn erhält ein Banner, welches sie zum Herunterladen der Applikation veranlasst. Nach einer Bestätigung wird die Applikation auch schon heruntergeladen und kann nun im Homescreen, wie andere native Applikationen über ihr App-Icon geöffnet werden. Dies führt aus technischer Sicht nur dazu, dass die Webseite im Browser geöffnet wird, jedoch kann hier durch gewisse Voreinstellungen und das oben angeführte &#8220;App-ähnliche Design&#8221; die gleiche User Experience wie bei einer nativen Applikation geschaffen werden.</p>



<p>Entwicklerinnen und Entwickler können ihre bereits bestehenden Webapplikationen auch relativ schnell in PWAs upgraden, da diese neben bekanntem HTML, CSS und Javascript auch nur zwei weitere grundlegende Komponenten benötigen, um PWA-tauglich gemacht werden zu können. Hierbei handelt es sich zum einen um das Manifest der Applikation und zum anderen um den Service Worker, den wohl wichtigsten Bestandteil einer PWA und über welchen die meisten Funktionalitäten, die Nutzerinnen und Nutzer bei nativen Applikationen gewohnt sind, entwickelt werden können.</p>



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



<p>(Dokumentation: https://developer.mozilla.org/de/docs/Web/Manifest)</p>



<p>Beim Web App Manifest der PWA handelt es sich um ein simples Json-File, in welchem verschiedene Daten zur Applikation eingetragen werden. Diese können dann vom Endgerät genutzt werden, um der Applikation im Homescreen einen Namen zu geben oder das passende App-Icon anzuzeigen. Ein Beispiel folgt:</p>



<pre class="wp-block-code"><code>{
	"name": "PWA Tutorial",
	"short_name": "PWA",
	"start_url": "/index.html",
	"display": "standalone",
	"background_color": "#181818",
	"theme_color": "#181818",
	"orientation": "portrait-primary",
	"icons": &#091;
		{
			"src": "/images/icon-48-48.png",
			"type": "image/png",
			"sizes": "48x48"
		},
	]
}
</code></pre>



<p>Weitere erforderliche Eigenschaften sind die Farbe der Benachrichtigungsleiste des Endgerätes, die Farbe des Splashscreens, und einer Auswahl aus Anzeigemöglichkeiten wie zum Beispiel dem Vollbildmodus. Optionale Eigenschaften können der Dokumentation entnommen werden.</p>



<h2 class="wp-block-heading">Service Worker</h2>



<p>Service Worker sind Bestandteil der übergreifenden Web Worker API. Diese Web Workers erlauben es Entwickler*innen, bestimmte Skripte unabhängig vom derzeitigen Hauptthread in einem Hintergrundthread laufen zu lassen. Dies<br>ermöglicht die Ausführung rechenintensiver Operationen, ohne den Hauptthread zu verlangsamen, welcher in vielen Fällen die grafische Oberfläche behandelt. Die Service Worker, welche unter anderem einen der wichtigsten Bestandteile von Progressive Web Applikationen ausmachen, sind programmierbare Skripte, die definieren, wie Serveranfragen gehandhabt werden. So können Anfragen zwischengespeichert werden, um die Performance der Applikation zu verbessern oder gespeicherte Daten auch offline abgerufen werden.</p>



<p>Der grundlegende Lifecycle eines Service Workers besteht aus drei Teilen: Registrierung, Installation und Aktivierung.</p>



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



<p>Um einen neuen Service Worker zu installieren, muss dieser zuerst im Browser registriert werden.</p>



<pre class="wp-block-code"><code>if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
 .then(function(registration) {
 console.log('Registration successful, scope is:',
registration.scope);
 })
 .catch(function(error) {
 console.log('Service worker registration failed, error:', error);
 });
}


</code></pre>



<p>Dieses Beispiel einer Registrierung kontrolliert zunächst anhand der Abfrage nach einem Service Worker im Browsernavigator, ob dieser mit dem Browser kompatibel ist. Ist dies der Fall, kann die „service-worker.js“-Datei mit der Methode „navigator.serviceWorker.register” registriert werden, die ein Promise zurückgibt, welches resolved wird, sobald der Worker erfolgreich registriert wurde und die momentane Scope protokolliert. </p>



<p>Die Scope definiert, welche Dateien in der Applikation vom Service Worker kontrolliert werden können. Liegt die „service-worker.js“-Datei also im root-Ordner, kann der Service Worker in allen darunter liegenden Verzeichnissen verwendet werden.</p>



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



<p>Sobald ein Service Worker im Browser registriert wurde, kann eine Installation versucht werden. Dazu wird ein “install”-Event im zu installierenden Worker ausgeführt. </p>



<pre class="wp-block-code"><code>self.addEventListener('install', function(event) {
 // Perform some task
});</code></pre>



<p>Bei der Installation können zum Beispiel gewisse Teile einer Applikation vorgespeichert werden, sodass diese beim nächsten Öffnen sofort geladen werden.</p>



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



<p>Ist der Service Worker im Browser installiert, kann er im Anschluss auch sofort aktiviert werden. Es wird, wie bei der Installation, ein „activate“-Event in der Datei des Workers ausgeführt.</p>



<pre class="wp-block-code"><code>self.addEventListener('activate', function(event) {
 // Perform some task
});
</code></pre>



<p>Nach der Aktivierung kann der Service Worker auf alle Dateien, die sich in der zuvor definierten Scope befinden, zugreifen. Um die Aktivierung eines potentiell neuen Service Worker vollständig abzuschließen, sollte die Applikation einmal geschlossen und neu geöffnet werden, um alle Inhalte auf den neuesten Stand zu bringen.</p>



<h3 class="wp-block-heading">Dateien offline anzeigen</h3>



<p>Innerhalb des Service Workers können nun auch Requests an den Server angesehen und manipuliert werden. Um eine simple HTML-Datei im Browser anzeigen zu können, muss diese von einem Server geladen werden. Ist eine Nutzerin oder ein Nutzer offline, so kann diese Request natürlich nicht vollständig durchgeführt werden. Mithilfe des Service Workers können nun statische Dateien, wie das benötigte HTML und CSS für die Applikation im Browsercache zwischengespeichert werden. Nun können zuvor gespeicherte Dateien aus dem Cache genommen und angezeigt werden, falls eine fehlende Internetverbindung die Verbindung zum Server verhindert. So kann ein statisches Grundgerüst der Applikation vorgespeichert werden und immer sichtbar sein, auch wenn die NutzerIn einmal offline ist.</p>



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



<p>Progressive Web Apps sind Webapplikationen, die durch erweiterte Features das Nutzererlebnis einer nativen Applikation simulieren, während sie immer noch die vielen Vorteile von Webapplikationen beibehalten. So bieten sie die Vorteile aus beiden Welten, ohne viel von deren Nachteilen mit sich zu tragen.</p>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/einfuehrung-in-progressive-web-apps/">Einführung in Progressive Web Apps</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print to Mobile &#8211; Werbekonzept für &#8220;Squid Game&#8221;</title>
		<link>https://mobile.fhstp.ac.at/allgemein/print-to-mobile-werbekonzept-fuer-squid-game/</link>
		
		<dc:creator><![CDATA[Fabian Gaugusch]]></dc:creator>
		<pubDate>Thu, 28 Oct 2021 11:15:23 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9203</guid>

					<description><![CDATA[<p>Die Serie &#8220;Squid Game&#8221; ist zum Verfassungszeitpunkt dieses Blogeintrages die weltweit meistgesehene Netflix-Serie und benötigt dementsprechend eigentlich kein weiteres Werbematerial, jedoch bot sie sich durch ihren Inhalt perfekt für die Umsetzung meines Print-to-Mobile-Projekts an. Die grundlegende Aufgabe war es, einen QR-Code und eine dazugehörige Seite für ein frei gewähltes Thema zu erstellen und dieses zur <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-werbekonzept-fuer-squid-game/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-werbekonzept-fuer-squid-game/">Print to Mobile &#8211; Werbekonzept für &#8220;Squid Game&#8221;</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die Serie &#8220;Squid Game&#8221; ist zum Verfassungszeitpunkt dieses Blogeintrages die weltweit meistgesehene Netflix-Serie und benötigt dementsprechend eigentlich kein weiteres Werbematerial, jedoch bot sie sich durch ihren Inhalt perfekt für die Umsetzung meines Print-to-Mobile-Projekts an. Die grundlegende Aufgabe war es, einen QR-Code und eine dazugehörige Seite für ein frei gewähltes Thema zu erstellen und dieses zur Vorstellung als ausgearbeitetes Printmedium in den Unterricht mitzunehmen. Ich habe mich streng genommen nicht vollständig an die Anforderungen gehalten, da es sich bei meiner Umsetzung nicht um ein Printobjekt, sondern ein an eine Wand projiziertes Bild handelte. Meine Idee war es, den QR-Code in der Nacht mithilfe eines Projektors auf öffentliche Wände in meiner Heimatstadt, Purkersdorf, zu projizieren. Dies soll im Speziellen Jugendliche, deren Interesse durch die mysteriöse Projektion geweckt wurde, dazu anregen, den QR-Code einzuscannen. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="672" height="465" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/10/Screenshot-2021-10-28-131341.jpg" alt="" class="wp-image-9208" /></figure>



<p>Wird der Code nun gescannt, führt ein Link zu einer simpel gehaltenen Seite, die Nutzerinnen und Nutzer zur Netflix-Seite der Serie führt. Natürlich wäre eine wirkliche Umsetzung dieser Idee mit einem großen Vorbereitungsaufwand verbunden, da die Projektionen nicht nur richtig platziert werden müssten, damit sie nicht von nichtsahnenden Passantinnen und Passanten verdeckt werden. Weiters muss auf die Ausrichtung und Größe der Projektion geachtet werden, damit der Code auch einwandfrei von den Kameras der Passantinnen und Passanten aufgenommen werden kann.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="375" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/10/image-375x800.png" alt="" class="wp-image-9205" /></figure>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print-to-mobile-werbekonzept-fuer-squid-game/">Print to Mobile &#8211; Werbekonzept für &#8220;Squid Game&#8221;</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
