<?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 Sebastian Ulbel - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm151536/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm151536/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Tue, 07 Mar 2017 11:58:09 +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 Sebastian Ulbel - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm151536/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Yarn &#8211; &#8220;the new cool kid on the block&#8221;</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/yarn/</link>
		
		<dc:creator><![CDATA[Sebastian Ulbel]]></dc:creator>
		<pubDate>Tue, 07 Mar 2017 11:58:09 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6861</guid>

					<description><![CDATA[<p>Wer hin und wieder mit JavaScript zu tun hat, kam wohl auch schon in das Vergnügen den Node Package Manager (kurz NPM) zu verwenden. Wer sich nun etwas mehr in dieser Szene aufhält, hat vermutlich auch schon von Yarn gehört. Yarn ist sozusagen &#8220;the new cool kid on the block&#8221;. Aber Yarn ist nicht nur <a class="read-more" href="https://mobile.fhstp.ac.at/development/webdevelopment/yarn/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/yarn/">Yarn &#8211; &#8220;the new cool kid on the block&#8221;</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wer hin und wieder mit JavaScript zu tun hat, kam wohl auch schon in das Vergnügen den <a href="https://www.npmjs.com/">Node Package Manager</a> (kurz <a href="https://www.npmjs.com/">NPM</a>) zu verwenden. Wer sich nun etwas mehr in dieser Szene aufhält, hat vermutlich auch schon von <a href="https://yarnpkg.com">Yarn</a> gehört. Yarn ist sozusagen &#8220;the new cool kid on the block&#8221;. Aber Yarn ist nicht nur ein neuer Trend, Yarn hat wesentliche Vorteile gegenüber NPM und könnte sich deswegen auf lange Sicht gesehen tatsächlich gegenüber NPM durchsetzen. Zuerst vorweg: Yarn ist kein komplett neues Ekosystem. Yarn verwendet die gleichen Packages wie NPM. Somit kann jeder, der bis jetzt NPM in seinen Projekten verwendet hat, schnell und einfach auf Yarn umsteigen und somit die Vorteile die sich dadurch ergeben nutzen.</p>
<h2>Die Vorteile von Yarn</h2>
<blockquote><p>FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT.</p></blockquote>
<p>Das ist der Leitspruch von Yarn, und daraus ergeben sich auch die wichtigsten Vorteile.</p>
<h3>Schnell</h3>
<p>Yarn ist schnell. Sogar sehr schnell. Das liegt an zwei Gründen:</p>
<ol>
<li>Yarn speichert alle Packages, die heruntergeladen werden</li>
<li>Yarn führt mehrere Operationen gleichzeitig aus</li>
</ol>
<p>Das bedeutet, wenn ich in einem Projekt zum Beispiel das das NPM Package &#8220;webpack&#8221; verwende, wird dieses auf meinem Computer gespeichert. Wenn ich nun ein neues Projekt starte, und dort ebenfalls wieder &#8220;webpack&#8221; verwende, wird das Package direkt von meiner Festplatte geladen und muss nicht erneut über das Internet aus dem Onlineverzeichnis heruntergeladen werden. Das ist einerseits schneller, und andererseits erhält man dadurch auch die Möglichkeit neue Projekte zu starten, ohne mit dem Internet verbunden sein zu müssen.</p>
<h3>Zuverlässig</h3>
<p>In einem normalen NPM-Projekt werden die Packages die verwendet werden in einer package.json Datei gespeichert. In dieser Datei wird für jedes Package angegeben, welche Version davon installiert ist beziehungsweise welche Version mindestens benötigt wird. Yarn geht hierbei noch einen Schritt weiter: Es wird nicht nur gespeichert, welche Version des verwendeten Packages benutzt wird, es speichert zudem auch alle Versionen der Dependencies dieses Packages in ein eigenes File namens yarn.lock. Gemeinsam mit dieser Information und einem eigenen Algorithmus für Installationen, garantiert Yarn so, dass ein Projekt das auf einem Computer lauft, auch auf jedem anderen Computer funktioniert.</p>
<h3>Sicher</h3>
<p>Yarn verwendet zudem Checksummen um die Intigrität von installierten Packages zu verifizieren bevor diese ausgeführt werden.</p>
<h2>Installation</h2>
<p>Nun da wir die wichtigsten Vorteile von Yarn kennen wird es Zeit Yarn zu installieren und zu verwenden. Und wie wird man Yarn wohl am einfachsten installieren? Richtig: über NPM!<br />
Also ganz einfach, wie gewohnt: <code>npm install -g yarn</code> ausführen, um Yarn global zu installieren.<br />
Und von nun an kann man Yarn nahezu ident zu NPM verwenden. Die meisten üblichen Befehle sind gleich, oder haben nur geringe Abweichungen.</p>
<h2>Die wichtigsten Befehle</h2>
<h3>Ein neues Package hinzufügen</h3>
<p><code>yarn add &lt;packagename&gt;</code></p>
<h3>Ein neues Package als dev-dependency hinzufügen</h3>
<p><code>yarn add --dev &lt;packagename&gt;</code></p>
<h3>Ein Package entfernen</h3>
<p><code>yarn remove &lt;packagename&gt;</code></p>
<h3>Installation starten</h3>
<p><code>yarn</code> (&#8220;install&#8221; muss nicht eingegeben werden)</p>
<h3>Weitere Befehle</h3>
<p>Die meisten anderen Befehle sind eins zu eins gleich wie bei NPM:<br />
<code><br />
npm link === yarn link<br />
npm outdated === yarn outdated<br />
npm publish === yarn publish<br />
npm run === yarn run<br />
npm cache clean === yarn cache clean<br />
npm login === yarn login<br />
npm logout === yarn logout<br />
npm test === yarn test<br />
</code></p>
<h2>Fazit</h2>
<p>Yarn ist einfach einzurichten und benötigt beinahe keine Einarbeitungszeit. Mit einigen Vorteilen gegenüber NPM und dem gleichen Ekosystem dahinter, ist es somit meiner persönlicher Favorit und auch meine erste Wahl für zukünftige Projekte. </p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/yarn/">Yarn &#8211; &#8220;the new cool kid on the block&#8221;</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Performance Optimierung für Google PageSpeed Insights</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/performance-optimierung-fuer-google-pagespeed-insights/</link>
		
		<dc:creator><![CDATA[Sebastian Ulbel]]></dc:creator>
		<pubDate>Mon, 16 May 2016 10:13:43 +0000</pubDate>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[page speed insights]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[speed]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6197</guid>

					<description><![CDATA[<p>Zielgruppe des Blogbeitrags Die meisten Webdeveloper haben bestimmt schon einmal von Google PageSpeed Insights gehört. Viele davon haben vermutlich auch schon die eine oder andere Maßnahme ergriffen, um ihr aktuelles Websiteprojekt dahingehend zu optimieren, um bei der Überprüfung durch Google PageSpeed Insights ein besseres Ergebnis als zuvor zu erzielen. Was man jedoch eher selten sieht, <a class="read-more" href="https://mobile.fhstp.ac.at/development/webdevelopment/performance-optimierung-fuer-google-pagespeed-insights/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/performance-optimierung-fuer-google-pagespeed-insights/">Performance Optimierung für Google PageSpeed Insights</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Zielgruppe des Blogbeitrags</h2>
<p>Die meisten Webdeveloper haben bestimmt schon einmal von <a href="https://developers.google.com/speed/pagespeed/insights/">Google PageSpeed Insights</a> gehört. Viele davon haben vermutlich auch schon die eine oder andere Maßnahme ergriffen, um ihr aktuelles Websiteprojekt dahingehend zu optimieren, um bei der Überprüfung durch Google PageSpeed Insights ein besseres Ergebnis als zuvor zu erzielen. Was man jedoch eher selten sieht, sind Websites die wirklich bis aufs letzte optimiert worden sind, um eine wirklich hohe Punktezahl bei der Beurteilung durch Google PageSpeed Insights zu erhalten.<br />
Dafür mag es viele Gründe geben, die wichtigsten sind jedoch wahrscheinlich:</p>
<ul>
<li>zu wenig Geld</li>
<li>zu wenig Zeit</li>
<li>zu wenig Fachwissen</li>
</ul>
<p>In den meisten Projekten ist es wahrscheinlich eine Kombination aus allen drei Gründen, vielleicht auch nur eine Kombination aus den beiden ersten. An alle, die jedoch noch wenig oder gar keine Erfahrung mit der Performanceoptimierung haben, richtet sich folgender Blogbeitrag.</p>
<h2>Grundvoraussetzungen</h2>
<p>Bevor man sich explizit ans Optimieren macht, sollte man sicherstellen, das die Grundvoraussetzungen einer &#8220;sauberen&#8221; Website erfüllt werden. Damit meine ich vor allem sauberen HTML-Code mit allem was dazu gehört. Am besten also zuerst einmal den HTML-Code validieren lassen, zum Beispiel über <a href="https://validator.w3.org/">W3C Validator</a>. Falls dort der eine oder andere beliebte Fehler, wie zum Beispiel fehlende alt-Tags bei Bildern oder falsch verschachtelter HTML-Code entlarvt wird, sollten diese Fehler vorweg behoben werden.</p>
<h2>Was muss optimiert werden?</h2>
<p>Nun ist es soweit, die Optimierung kann starten. Um zu wissen, was man an der aktuellen Seite alles optimieren kann, ist es am leichtesten einfach mal die <a href="https://developers.google.com/speed/pagespeed/insights/">Google PageSpeed Insights</a> aufzurufen, den Link der Website einzugeben, und sich die Vorschläge von Google anzusehen.</p>
<p>Keine Angst, es ist normal, dass eine Website die bis jetzt noch nicht oder kaum optimiert wurde, hier erst einmal ziemlich schlecht abschneidet. Also nicht schrecken, auch wenn Werte unter 70 von Google in oranger Warnfarbe, und Werte unter 60 sogar in roter Farbe gekennzeichnet werden.</p>
<p><img fetchpriority="high" decoding="async" class="alignright size-full wp-image-6201" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/04/ausgangslage_desktop.png" alt="PageSpeed Insights ohne Optimierung" width="810" height="776" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/04/ausgangslage_desktop.png 810w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/04/ausgangslage_desktop-32x32.png 32w" sizes="(max-width: 810px) 100vw, 810px" /></p>
<h2>Mobil vs. Desktop</h2>
<p>Auch normal ist, dass die Wertung für Mobile geringer ist, als für Desktop. Das liegt vor allem daran, dass Google davon ausgeht, dass man beim Zugriff auf Websiten über mobile Geräte über eine langsamere Internetverbindung verfügt, was das Laden von Ressourcen verzögert, was wiederrum zur Folge hat, dass Seiten für die mobile Nutzung noch stärker optimiert werden sollten. Eine Seite die gute Werte für den Abruf über Desktop &#8211; Geräte hat, kann also durchaus nur mittelmäßige Werte beim Abruf über mobile Geräte haben. Zu sehen ist das im folgenden Screenshot, der die gleiche Website wie zuvor zeigt, jedoch eben mit anderer Gewichtung unterschiedlicher Faktoren.<br />
<img decoding="async" class="alignright size-full wp-image-6204" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/04/ausgangslage_mobile.png" alt="PageSpeed Insights - ohne Optimierung, - mobil" width="834" height="775" /></p>
<h2>Die wichtigsten Optimierungen</h2>
<p>Nachdem man nun weiß, wo Google Optimierungspotential sieht, kann man sich auch schon darauf stürzen.</p>
<h3>Caching</h3>
<p>Der erste Fehler, der in unserem Beispiel von Google aufgeführt wird, ist in diesem Fall &#8220;Browser-Caching nutzen&#8221;. Freundlicherweise gibt es bei jedem Fehler auch einen Link zur Fehlerbehebung, der zum jeweiligen Artikel in der Dokumentation der Google PageSpeed Insights führt. <a href="https://developers.google.com/speed/docs/insights/LeverageBrowserCaching#bersicht">Dieser Link hier</a> zum Beispiel, informiert uns also darüber, wie wir Browser-Caching nutzen können. Wie genau die dort beschriebenen Punkte aber umgesetzt werden können, steht hier leider nicht dabei. Aber nach einer kurzen Recherche gibt es massenhaft Links zu Websites, die hierbei behilflich sind. Zum Beispiel empfiehlt Patrick Sexton auf seiner eigens für die Optimierung von Websiten für Google Page Speed Insights angelegten Website <a href="https://varvy.com/pagespeed/leverage-browser-caching.html">varvy.com</a> folgenden Code in die .htaccess Datei der Website einzufügen:</p>
<p><code>## EXPIRES CACHING ##</p>
<p>ExpiresActive On<br />
ExpiresByType image/jpg "access 1 year"<br />
ExpiresByType image/jpeg "access 1 year"<br />
ExpiresByType image/gif "access 1 year"<br />
ExpiresByType image/png "access 1 year"<br />
ExpiresByType text/css "access 1 month"<br />
ExpiresByType text/html "access 1 month"<br />
ExpiresByType application/pdf "access 1 month"<br />
ExpiresByType text/x-javascript "access 1 month"<br />
ExpiresByType application/x-shockwave-flash "access 1 month"<br />
ExpiresByType image/x-icon "access 1 year"<br />
ExpiresDefault "access 1 month"</p>
<p>## EXPIRES CACHING ##</code></p>
<h3>&#8220;above the fold&#8221;</h3>
<p>Der nächste Punkte der so gut wie immer auftauchen wird, wenn eine Seite das erste mal von Google Page Speed Insights überprüft wird, nennt sich &#8220;above the fold&#8221;. Hier geht es darum, dass JavaScript- und CSS-Ressourcen, die das Rendering blockieren, in Inhalten &#8220;above the fold&#8221; (ohne Scrollen sichtbar) zu beseitigen. Ich persönlich habe bei meinem Portfolio das <a href="https://www.npmjs.com/package/critical">Node-Package critical</a> von Addy Osmani verwendet. Wer sich genauer mit diesem Thema beschäftigen möchte, sollte sich den ebenfalls hier auf dem MFG Blog verfügbaren Artikel <a href="https://akirchknopf-21110.php.fhstp.cc/development/critical-css/">&#8220;Critical CSS&#8221;</a> zu Gemüte führen.</p>
<h3>Komprimierung</h3>
<p>Ebenfalls sehr wichtig ist die Komprimierung der Daten bevor sie ausgeliefert werden. Eine genaue Beschreibung dazu findet sich ebenfalls auf der wirklich empfehlenswerten Website <a href="https://varvy.com/pagespeed/enable-compression.html">varvy.com</a>, von der auch die beiden folgenden Code-Snippets stammen, die wiederum in die .htaccess integriert werden müssen. Je nachdem um welchen Webserver es sich handelt, bzw. welche Rechte dort vorhanden sind, sollte entweder dieser Code:<br />
<code>ifModule mod_gzip.c<br />
mod_gzip_on Yes<br />
mod_gzip_dechunk Yes<br />
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$<br />
mod_gzip_item_include handler ^cgi-script$<br />
mod_gzip_item_include mime ^text/.*<br />
mod_gzip_item_include mime ^application/x-javascript.*<br />
mod_gzip_item_exclude mime ^image/.*<br />
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*<br />
/ifModule<br />
</code><br />
oder sonst dieser:<br />
<code>AddOutputFilterByType DEFLATE text/plain<br />
AddOutputFilterByType DEFLATE text/html<br />
AddOutputFilterByType DEFLATE text/xml<br />
AddOutputFilterByType DEFLATE text/css<br />
AddOutputFilterByType DEFLATE application/xml<br />
AddOutputFilterByType DEFLATE application/xhtml+xml<br />
AddOutputFilterByType DEFLATE application/rss+xml<br />
AddOutputFilterByType DEFLATE application/javascript<br />
AddOutputFilterByType DEFLATE application/x-javascript<br />
</code><br />
das gewünschte Ziel herbeiführen.</p>
<h3>Ergebnis</h3>
<p>Wenn man sich so also Schritt für Schritt voran hantelt, sollte man nach jeder durchgeführten Optimierung eine Verbesserung der Wertung auf Google PageSpeed Insights erkennen. Wenn man das nun bis zum Limit treibt, sind beinahe 100 Punkte möglich. Ich selbst habe dies auf meiner Website <a href="http://www.suits.at">www.suits.at</a> ausprobiert, und bin mit dem Ergebnis mehr als zufrieden. <img decoding="async" class="alignright size-full wp-image-6207" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/04/dektop1.png" alt="PageSpeed Insights - mit Optimierung" width="1165" height="596" /><br />
Perfektionisten werden sich nun an dem einen fehlenden Punkt stören &#8211; mir ging es hierbei nicht anders. Dieser eine Punkte kommt daher, dass Google der Meinung ist, dass Google Analytics Script sollte gecached werden. <img loading="lazy" decoding="async" class="alignright size-full wp-image-6209" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/04/analytics.png" alt="Google Analytics Caching" width="828" height="348" /> Da das Script aber bekanntlich auf Googles Servern liegt, hat man als Nutzer keinen Einfluss auf das Caching dieses Scripts. Es gibt zwar Ansätze und Ideen auf <a href="https://stackoverflow.com/questions/29162881/pagespeed-insights-99-100-because-of-google-analytics-how-can-i-cache-ga">Stackoverflow</a> in denen User dazu raten, das Script über einen Cronjob regelmäßig herunterzuladen und dann vom eigenen Server aus zu laden und cachen, die folgende Antwort gefiel mir persönlich jedoch am besten:<br />
&#8220;I wouldn&#8217;t worry about it. Don&#8217;t put it on your own server, it sounds like this is an issue with Google, but as good as it gets. Putting the file on your own server will create many new problems. They probably need the file to get called every time rather than getting it from the client&#8217;s cache, since that way you wouldn&#8217;t count the visits. If you have a problem to feel fine with that, run the Google insights URL on Google insights itself, have a laugh, relax and get on with your work.&#8221;<br />
Was ich getan habe, und nach einem kurzen lächeln war ich dann auch mit den 99 Punkten zufrieden. <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/performance-optimierung-fuer-google-pagespeed-insights/">Performance Optimierung für Google PageSpeed Insights</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Google Analytics: Datenausgabe im Frontend</title>
		<link>https://mobile.fhstp.ac.at/development/google-analytics-datenausgabe-im-frontend/</link>
		
		<dc:creator><![CDATA[Sebastian Ulbel]]></dc:creator>
		<pubDate>Tue, 08 Dec 2015 19:16:25 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[Google Analytics API]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Web-App]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5878</guid>

					<description><![CDATA[<p>Motivation Im Rahmen des Initialprojekts für Mobile Anwendungen habe ich mit &#8220;QR Live Stats&#8221; eine kleine Webapplikation erstellt, die Daten aus der Google Anylatics API im Frontend ausgibt. Ansich ist das keine Hexerei und mit relativ wenig Code umsetzbar &#8211; jedoch gibt es eine Menge Stolpersteine, die es zu überwinden gilt, bevor man zu dem gewünschten <a class="read-more" href="https://mobile.fhstp.ac.at/development/google-analytics-datenausgabe-im-frontend/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/google-analytics-datenausgabe-im-frontend/">Google Analytics: Datenausgabe im Frontend</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Motivation</h2>
<p>Im Rahmen des Initialprojekts für Mobile Anwendungen habe ich mit <strong>&#8220;QR Live Stats&#8221;</strong> eine kleine Webapplikation erstellt, die Daten aus der Google Anylatics API im Frontend ausgibt. Ansich ist das keine Hexerei und mit relativ wenig Code umsetzbar &#8211; jedoch gibt es eine Menge Stolpersteine, die es zu überwinden gilt, bevor man zu dem gewünschten Ergebnis kommt. Da ich diese Erfahrung bereits gemacht habe, möchte ich mit diesem Blogeintrag meine Erfahrungen teilen, und hoffe dem einen oder anderen damit etwas Zeit zu ersparen.<span id="more-5878"></span></p>
<h2>Aller Anfang ist schwer</h2>
<p>Wie so oft in der Welt der Webentwicklung, startete auch dieses Projekt mit einer Google Suche. Wenige Mausklicks später landetete ich in der sehr, und ich meine wirklich <em>sehr</em> umfangreichen Google Analytics API. <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/11/google_analytics.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-5883" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/11/google_analytics-300x219.jpg" alt="Google Analytics API Startseite" title="Google Analytics API Startseite" width="300" height="219" /></a> Der Umfang der API hat zur Folge, dass sich in dieser Informationen zu beinahe jedem Anwendungsfall finden &#8211; was gleichzeit sowohl ein Vor- als auch ein Nachteil ist. Wenn man genau weiß wonach man sucht, ist dies auf jedenfall ein Vorteil. Es gibt viele Codebeispiele, sogar in verschiedenen Programmiersprachen und jede Menge Referenzen allermöglicher Attribute, Werte, Einstellungen und was man sonst noch brauchen könnte. Wenn man jedoch keine Ahnung hat, was genau man sucht, und probiert über Stichwörter wie &#8220;<em>frontendausgabe, php, javascript&#8221;</em> zu einem Ergebnis zu kommen, ist man möglicherweise schon auf der <a href="https://developers.google.com/analytics/">Übersichtsseite </a>der Google Analytics API verwirrt und muss mit einigen Stunden an Recherchearbeit rechnen. Da die vielen Themen auf die man dabei stoßen kann, bis man findet was man eigentlich braucht, nicht besonders spannend sind, lasse ich diesen Teil aus und komme weiter zu dem Punkt, in dem ich erkläre, was nun wirklich zu tun ist.</p>
<h3>Vorraussetzungen</h3>
<p>Zu allererst braucht man natürlich eine Website, von der die Daten kommen sollen und dafür natürlich auch den entsprechenden Analytics Code. Da dieser sich nicht vom &#8220;normalen&#8221; Code unterscheidet, den man sonst braucht, wenn man eine Seite tracken möchte, gehe ich hier nicht weiter darauf ein.<br />
Zudem braucht man außerdem einen sogenannten <em>Service Account</em> um die Authentifizierung die normalerweise notwendig ist um ins Dashboard von Google Analytics zu gelangen, und sich die Daten anzeigen zu lassen, zu umgehen bzw. direkt am Server zu erledigen. Hierbei sind folgende Schritte notwendig: </p>
<ol>
<li>Eine Client ID in der Google Developers Console anlegen und die Emailadresse des neuen Service Accounts zum Google Analytics Account hinzufügen.</li>
<li>Die <a href="https://github.com/google/google-api-php-client">PHP Client Library</a> die für den Zugriff auf die API benötigt wird auf den Server kopieren.</li>
<li>Das &#8220;key.p12&#8221; File, dass beim Erzeugen der Client ID generiert wurde, auf den Server kopieren.</li>
</ol>
<p>Weitere Informationen dazu finden sich in der <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php">Google Anlytics API</a>.</p>
<h2>Umsetzung</h2>
<p>Nun braucht man noch ein PHP File, in dem die Einbindung aller Ressourcen stattfindet. Ein Beispielfile dafür stellt Google ebenfalls in der API <a href="https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php">(hier)</a> bereit. Wenn man nun noch die Pfade für die PHP API und das Keyfile richtig setzt, und zudem die Mailadresse des Serviceaccounts einträgt, <em>sollte</em> an dieser Stelle die Grundfunktionalität gegeben sein.<br />
Wer jetzt diesen Error bekommt <em>&#8220;A client error occurred: Could not create storage directory&#8221;</em> der ist nicht der Erste. Bei <a href="https://stackoverflow.com/questions/17282894/a-client-error-occurred-could-not-create-storage-directory-tmp-google-client/27158161#27158161">Stackoverflow </a>habe ich auch hierfür eine Lösung gefunden: </p>
<pre class="brush: php; title: ; notranslate">
$config = new Google_Config();
$config-&gt;setClassConfig('Google_Cache_File', array('directory' =&gt; '../tmp/cache'));
// Here I set a relative folder to avoid pb on permissions to a folder like /tmp that is not permitted on my mutualised host
$client = new Google_Client($config);
// And then,  you pass the config for your GoogleClient
</pre>
<p>Mit diesem Snippet sollte nun alles funktionieren. </p>
<h2>Feintuning</h2>
<p>Wenn man den Beispielcode aus der API verwendet, werden alle Sessions der letzten 7 Tage angezeigt. Wenn man andere Daten auslesen beziehungsweise anzeigen möchte, kann man die Parameter in der <em>getResults Function</em> entsprechend anpassen. Im <a href="https://developers.google.com/analytics/devguides/reporting/core/dimsmets">Dimensions &#038; Metrics Explorer</a> gibt es dazu eine ebenfalls sehr umfangreiche Dokumentation der möglichen Werte. Zudem können auch diverser <a href="https://support.google.com/analytics/answer/1033162?hl=en">Filter</a> verwendet werden. Ebenfalls sehr hilfreich ist hierbei der <a href="https://ga-dev-tools.appspot.com/query-explorer/">Query Explorer</a>, mit Hilfe dessen man die Querys testen kann, bevor ma sie auf den eigenen Code anwendet. </p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/google-analytics-datenausgabe-im-frontend/">Google Analytics: Datenausgabe im Frontend</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print To Mobile: QR Live Stats</title>
		<link>https://mobile.fhstp.ac.at/development/print-to-mobile-qr-live-stats/</link>
		
		<dc:creator><![CDATA[Sebastian Ulbel]]></dc:creator>
		<pubDate>Mon, 26 Oct 2015 22:51:45 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Print-to-mobile]]></category>
		<category><![CDATA[QR]]></category>
		<category><![CDATA[QR-Code]]></category>
		<category><![CDATA[Web-App]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5591</guid>

					<description><![CDATA[<p>In dem Initialprojekt für Mobile Anwendungen, welches sich mit dem Thema „print-to-mobile“ beschäftigt, habe ich das Projekt QR Live Stats umgesetzt. Idee Ziel von QR Live Stats war es, mit Hilfe von QR-Codes auf Visitenkarten, möglichst viele Personen auf die für dieses Projekt erstellte Website zu leiten. Design Da ich mich selbst nicht als Designer ansehe, wollte ich <a class="read-more" href="https://mobile.fhstp.ac.at/development/print-to-mobile-qr-live-stats/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/print-to-mobile-qr-live-stats/">Print To Mobile: QR Live Stats</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In dem Initialprojekt für Mobile Anwendungen, welches sich mit dem Thema „print-to-mobile“ beschäftigt, habe ich das Projekt <strong>QR Live Stats</strong> umgesetzt.</p>
<h3>Idee</h3>
<p>Ziel von <strong>QR Live Stats </strong>war es, mit Hilfe von QR-Codes auf Visitenkarten, möglichst viele Personen auf die für dieses Projekt erstellte Website zu leiten.</p>
<p><span id="more-5591"></span></p>
<h3>Design</h3>
<p>Da ich mich selbst nicht als Designer ansehe, wollte ich auch das Design des Printmaterials möglichst einfach halten. Um dennoch den einen oder anderen anzusprechen, habe ich deswegen versucht, an die Neugierde der Personen zu appellieren, was folgiges Design zur Folge hatte:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5598 size-medium" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/qr_code-234x300.png" alt="Visitenkarte" width="234" height="300" /></p>
<h3>Vorgehensweise</h3>
<p>Die Visitenkarten enthielten dabei verschiedene verschiedene QR-Codes, die in Abhängigkeit von ihrer Platzierung eine jeweils andere ID erhalten. Somit war es mir möglich zu erkennen, wo der QR-Code gescanned wurde. Zum Beispiel hatte der QR-Code auf dem Tisch eine andere ID als der auf dem Beamer.</p>
<p>Was mich auch schon zum weiterführenden Ziel bringt: Nachdem der Nutzer den QR-Code gescanned hat, soll dieser auf eine Website geleitet werden (zum Beispiel <a href="http://dm151536.students.fhstp.ac.at/?id=grischa">hierhin</a>), auf welcher er nun Statistiken erhält. Zum werden Angaben darüber gemacht, der wievielte „Neugierige“ am jeweiligen Ort der Nutzer bereits ist, zum anderen erhält er dort weiterführende Informationen anhand der Google Analytics API. Derzeit erfolgt hierbei eine Auflistung der am meisten benutzten Mobile Devices.</p>
<h3>Ausblick</h3>
<p>Falls das Projekt weiterverfolgt und ausgebaut wird, können hier jedoch noch eine Vielzahl an weiterer Daten wie z.b. verwendeter Browser, beliebte Uhrzeiten, &#8230; ausgegeben werden. Ebenfalls für ein weiterführendes Projekt interessant wären Infografiken, welche die ausgegebenen Statistiken grafisch ansprechend aufbereiten.</p>
<h3>Technische Umsetzung &amp; Fazit</h3>
<p>Die technische Umsetzung erfolgte mit Hilfe von von PHP/HTML/JS/CSS und der Google Analytics API. Da ich bei der Erstellung dieser Anwendung über eine Vielzahl von &#8220;Steinen gestolpert&#8221; bin, werde ich hierzu noch einen eigenen Artikel schreiben, welcher sich im Detail mit der Frontendausgabe von Daten aus der Google Analytics API beschäftigt, und hoffe somit dem einen oder anderen etwas Zeit mit der Google Analytics API ersparen zu können.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/print-to-mobile-qr-live-stats/">Print To Mobile: QR Live Stats</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
