<?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 Bernhard Zeller - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm141569/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm141569/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Mon, 05 Sep 2016 09:20:46 +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 Bernhard Zeller - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm141569/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Webshop Bestimmungen</title>
		<link>https://mobile.fhstp.ac.at/allgemein/webshop-bestimmungen/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Mon, 14 Mar 2016 15:00:55 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6172</guid>

					<description><![CDATA[<p>Eine Firma hat eine Website und möchte nun einen Webshop eröffnen. Neben den typischen Entwickungsarbeiten muss dieses Unternehmen außerdem die AGB abändern. Die einfachste, aber auch kostenintensivste Möglichkeit ist, einen Juristen damit zu beauftragen, Allgemeine Geschäftsbedingungen für den eigenen Webshop zu erstellen. Wer sich allerdings ein Angebot von einem Rechtsanwalt erstellen lässt, bekommt oft ein Angebot im <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/webshop-bestimmungen/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/webshop-bestimmungen/">Webshop Bestimmungen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400;">Eine Firma hat eine Website und möchte nun einen Webshop eröffnen. </span><span style="font-weight: 400;">Neben den typischen Entwickungsarbeiten muss dieses Unternehmen außerdem die AGB abändern. </span></p>
<p><span style="font-weight: 400;">Die einfachste, aber auch kostenintensivste Möglichkeit ist, einen Juristen damit zu beauftragen, Allgemeine Geschäftsbedingungen für den eigenen Webshop zu erstellen. Wer sich allerdings ein Angebot von einem Rechtsanwalt erstellen lässt, bekommt oft ein Angebot im fünfstelligen Eurobereich.</span></p>
<p><span style="font-weight: 400;">Vor allem für kleinere Onlineshop-Betreiber sind derartige Kosten alles andere als wirtschaftlich.</span></p>
<p><span id="more-6172"></span></p>
<p><span style="font-weight: 400;">Manche Onlineshop-Betreiber kopieren sich AGB von fremden Onlineshops und verändern diese ihren Vorstellungen entsprechend. Davon ist allerdings stark abzuraten, da man dadurch eine Urheberverletzung begeht. Es ist nicht gestattet, fremde Daten zu kopieren und für seine eigenen Zwecke zu nutzen. </span></p>
<p><span style="font-weight: 400;">In Österreich bietet die Wirtschaftskammer kostenlos für jede Branche ausgesprochen gute Vorlagen, welche durch Juristen erstellt wurden und durch den Shopbetreiber beliebig verändert werden dürfen. </span></p>
<p><span style="font-weight: 400;">Wer kein Mitglied der österreichischen Wirtschaftskammer ist kann auch im World Wide Web einige Vorlagen für AGB finden.</span></p>
<p><span style="font-weight: 400;">Empfehlenswert ist es, diese Vorlagen durch einen Rechtsanwalt speziell für die jeweiligen Zwecke verfeinern zu lassen. Hierbei belaufen sich die Kosten meist im dreistelligen Eurobereich, was auch für Betreiber kleinerer Onlineshops leistbar ist.</span></p>
<h3><span style="font-weight: 400;">Geltung von AGB im Internet</span></h3>
<p><span style="font-weight: 400;">Werden bei Geschäftsabschlüssen über das Internet AGB verwendet, dann muss deren Geltung vertraglich vereinbart werden, damit sie Bestandteil des konkreten Rechtsgeschäftes werden. Der Unternehmer muss daher darauf hinweisen, dass er dem beabsichtigten Vertrag seine AGB zu Grunde legt, was vor dem Vertragsabschluss zu erfolgen hat, und der Kunde muss zumindest die Möglichkeit haben, sich Kenntnis vom Inhalt dieser AGB zu verschaffen.</span></p>
<p><span style="font-weight: 400;">In der Praxis werden AGB auf der Website eines Online-Händlers oftmals durch einen eigenen Link auf den Text der AGB zur Verfügung gestellt. Der Kunde kann sich dadurch Kenntnis vom Inhalt dieser AGB verschaffen, in dem er den entsprechenden Link anklickt. Dies genügt, um dem Erfordernis zu entsprechen, dass der Vertragspartner die Möglichkeit haben muss, sich Kenntnis vom Inhalt der AGB zu verschaffen. Ob er sie dann tatsächlich durchliest, ist seine Sache.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Das Fernabsatz- und Auswärtsgeschäfte-Gesetz (FAGG) sieht bei Verträgen mit Konsumenten (B2C) die unter ausschließlicher Verwendung eines oder mehrerer Fernkommunikationsmittel (zB E-Mail oder online) geschlossen werden, bestimmte Informations- und Bestätigungspflichten vor.</span></p>
<p><span style="font-weight: 400;">Danach muss der Verbraucher rechtzeitig vor der Abgabe seiner Vertragserklärung über folgende Informationen verfügen:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">die </span><b>wesentlichen Merkmale</b><span style="font-weight: 400;"> der Waren oder Dienstleistungen</span></li>
<li style="font-weight: 400;"><b>Namen </b><span style="font-weight: 400;">oder </span><b>Firma</b><span style="font-weight: 400;"> sowie </span><b>Anschrift</b><span style="font-weight: 400;"> ;gegebenenfalls </span><b>Telefon</b><span style="font-weight: 400;">, </span><b>Fax</b><span style="font-weight: 400;"> und </span><b>E-Mail</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls  Geschäftsanschrift für Beschwerden</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls Namen/Firma und Anschrift jener Person, in deren Auftrag der Unternehmer handelt, sowie die Anschrift dieser Person, für Beschwerden</span></li>
<li style="font-weight: 400;"><b>Gesamtpreis</b><span style="font-weight: 400;"> inkl aller Nebenkosten (wenn nicht möglich: Art der Preisberechnung)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">bei unbefristeten oder Abonnementverträgen: Gesamtkosten oder Kosten pro Monat (wenn nicht möglich: Art der Preisberechnung)</span></li>
<li style="font-weight: 400;"><b>Kosten</b><span style="font-weight: 400;"> der für den Vertragsabschluss eingesetzten Fernkommunikationstechnik, sofern nicht nach einem Grundtarif berechnet (kostenpflichtige Mehrwertnummern)</span></li>
<li style="font-weight: 400;"><b>Zahlungs-,Liefer</b><span style="font-weight: 400;">&#8211; und </span><b>Leistungsbedingungen, </b><span style="font-weight: 400;">sowie </span><b>Lieferzeitraum</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Bei </span><b>Bestehen </b><span style="font-weight: 400;">eines </span><b>Rücktrittsrechts: Bedingungen, Fristen </b><span style="font-weight: 400;">und </span><b>Vorgangsweise </b><span style="font-weight: 400;">für die Ausübung dieses Rechts</span><b> inkl</b> <b>Muster-Widerrufsformulars</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls Hinweis, dass der Verbraucher im Rücktrittsfall die </span><b>Kosten für die Rücksendung</b><span style="font-weight: 400;"> der Waren zu tragen hat</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls Hinweis, wenn vom Verbraucher ausdrücklich gewünscht, dass mit einer bestellten Dienstleistung noch innerhalb der Rücktrittsfrist begonnen wird und dass er für die erfolgte Dienstleistung im Rücktrittsfall ein </span><b>anteiliges Entgelt</b><span style="font-weight: 400;"> zu zahlen hat.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls Hinweis über das Nichtbestehen eines Rücktrittsrechts oder die Umstände, unter denen der Verbraucher sein </span><b>Rücktrittsrecht verliert</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Hinweis auf das Bestehen des gesetzlichen </span><b>Gewährleistungsrecht</b><span style="font-weight: 400;">s</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls der Hinweis auf allfällige </span><b>Garantien</b><span style="font-weight: 400;"> und deren Bedingungen</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls der Hinweis auf </span><b>Verhaltenskodizes</b></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls die </span><b>Laufzeit des Vertrags</b><span style="font-weight: 400;"> oder die Kündigungsbedingungen</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls die </span><b>Mindestdauer</b><span style="font-weight: 400;"> der Verpflichtungen</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls der Hinweis auf </span><b>Kaution </b><span style="font-weight: 400;">oder sonstige Sicherheiten</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls die </span><b>Funktionsweise</b><span style="font-weight: 400;"> digitaler Inhalte und Schutzmaßnahmen</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls die </span><b>Interoperabilität</b><span style="font-weight: 400;"> digitaler Inhalte mit Hard- und Software</span></li>
</ul>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">gegebenenfalls Zugang zu einem </span><b>außergerichtlichen Beschwerde</b><span style="font-weight: 400;">verfahren</span></li>
</ul>
<p><span style="font-weight: 400;">Diese Informationen, die oftmals typischer Inhalt von AGB sind, müssen dem Verbraucher klar und verständlich in einer dem verwendeten Fernkommunikationsmittel angepassten Art und Weise erteilt werden</span></p>
<p><span style="font-weight: 400;">Das E-Commerce Gesetz (ECG) wiederum sieht ausdrücklich vor, dass ein Diensteanbieter die Vertragsbestimmungen und allfällige allgemeine Geschäftsbedingungen dem Nutzer so zur Verfügung zu stellen hat, dass er sie speichern und wiedergeben kann. Diese Verpflichtung kann nicht zum Nachteil des Nutzers abbedungen werden und gilt für Verbraucherverträge  (B2C) genau so, wie bei Verträgen zwischen Unternehmern (B2B).</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Dieser Link muss in der Abfolge des Bestellvorganges im Internet (auch) vor der definitiven Absendung der Bestellung bereitgestellt werden, da andernfalls der Kunde keine Möglichkeit hätte, vor Abgabe seines Vertragsangebotes den Inhalt der AGB zu lesen. Unzureichend ist es daher, den Hinweis auf die AGB (nur) versteckt auf der Website zu platzieren, während AGB, die dem Bestellicon unmittelbar vorangestellt werden, ausreichend sind. Sinnvoll ist es, die AGB sowohl allgemein auf die Website zu stellen, damit der Kunde sie in Ruhe lesen kann, und sie für die Gültigkeit im konkreten Vertrag im Bestellvorgang zu integrieren.</span></p>
<p><b>Tipp: Richten Sie Ihre Website so ein, dass der Kunde vor Abgabe der Bestellung auf einen Button drücken muss, mit dem er bestätigt, dass er die AGB zustimmend zur Kenntnis genommen hat.</b></p>
<p><span style="font-weight: 400;">Der reine Hinweis auf der Website, dass der Text der vertragsrelevanten AGB dem Kunden auf Wunsch zugesandt werden kann, genügt nicht dem Erfordernis der Kenntnisnahme vor bzw bis zum Zeitpunkt des Vertragsabschlusses und widerspricht auch dem ECG.</span></p>
<h3><span style="font-weight: 400;">Vertragssprache</span></h3>
<p><span style="font-weight: 400;">Es gibt keine ausdrückliche gesetzliche Bestimmung, die vorschreibt in welcher Sprache AGB abgefasst werden müssen, damit sie rechtsverbindlich werden. Dies kann im Bereich des Internet zu Zweifelsfragen führen, insbesondere dann, wenn der Kunde auf der Website eines fremdsprachigen Internethändlers bestellt.</span></p>
<p><span style="font-weight: 400;">Die herrschende Auffassung geht diesbezüglich  davon aus, dass es genügt, wenn der Text der AGB in jener Sprache abgefasst ist, wie der abzuschließende Hauptvertrag. Wenn somit mit einer englischsprachigen Website geworben wird, genügt es für die Verbindlichkeit der AGB unter diesem Aspekt, wenn auch die AGB englisch verfasst sind.</span></p>
<p><span style="font-weight: 400;">Allerdings kann diese Beurteilung bei Verträgen mit Konsumenten im Sinn des Konsumentenschutzgesetzes auch anders ausfallen, wenn das im Konsumentenschutzgesetz normierte Transparenzgebot so ausgelegt wird, dass Vertragsbestimmungen in AGB schon deshalb als unklar oder unverständlich abgefasst sind, weil sie nicht in deutscher Sprache verfasst sind. Höchstgerichtliche Rechtsprechung fehlt zu dieser Thematik noch, nicht zuletzt wegen der relativen Neuheit dieser Problematik.</span></p>
<p><b>Tipp: Sinnvoll ist es auf jeden Fall, sich am „Zielstaat“ zu orientieren, also jene Sprache(n) zu wählen, für die das Internetangebot gedacht ist und das auch auf der Website ausdrücklich (beispielsweise durch Länderwappen) klarzustellen.</b></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Quelle: </span><a href="https://www.wko.at/Content.Node/Service/Wirtschaftsrecht-und-Gewerberecht/E-Commerce-und-Internetrecht/Vertragsrecht-im-Internet/AGB_im_Internet_-_allgemeiner_Ueberblick.html"><span style="font-weight: 400;">https://www.wko.at/Content.Node/Service/Wirtschaftsrecht-und-Gewerberecht/E-Commerce-und-Internetrecht/Vertragsrecht-im-Internet/AGB_im_Internet_-_allgemeiner_Ueberblick.html</span></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ecommerce-blog.at/frontend/scripts/index.php?setMainAreaTemplatePath=mainarea_news.html&amp;newsId=131"><span style="font-weight: 400;">http://www.ecommerce-blog.at/frontend/scripts/index.php?setMainAreaTemplatePath=mainarea_news.html&amp;newsId=131</span></a></p>
<p>&nbsp;</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/webshop-bestimmungen/">Webshop Bestimmungen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Critical CSS</title>
		<link>https://mobile.fhstp.ac.at/development/critical-css/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Mon, 07 Dec 2015 07:00:23 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5936</guid>

					<description><![CDATA[<p>Angefangen hat alles mit Google PageSpeed Insights. Als Ben Edwards seine Website mit dem Tool von Google überprüfte, empfahl es ihm Teile von seinem CSS-Code inline im HTML-Dokument auszuliefern um die Ladezeit zu verkürzen. CSS Code in HTML einbinden, hört sich im ersten Moment schrecklich und falsch an. Gerade für mobile Geräte, wo die Internetverbindung <a class="read-more" href="https://mobile.fhstp.ac.at/development/critical-css/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/critical-css/">Critical CSS</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Angefangen hat alles mit <a href="https://developers.google.com/speed/pagespeed/insights/">Google PageSpeed Insights</a>. Als <a href="https://benedfit.com/">Ben Edwards </a>seine Website mit dem Tool von Google überprüfte, empfahl es ihm Teile von seinem CSS-Code inline im HTML-Dokument auszuliefern um die Ladezeit zu verkürzen. CSS Code in HTML einbinden, hört sich im ersten Moment schrecklich und falsch an. Gerade für mobile Geräte, wo die Internetverbindung nicht immer optimal ist (z. B. U-Bahn) ist eine Verbesserung der Ladezeit gewünscht. Da kann Critical CSS hilfreich sein.</p>
<p><span id="more-5936"></span></p>
<p>Was Google PageSpeed aber damit sagen will ist, dass externe CSS-Dateien (eingebunden via `&lt;link&gt;`) das Rendern der Seite im Browser blockieren. Das heißt, dass das Rendern erst fortgesetzt wird, wenn die Dateien geladen sind. Was auch logisch ist, die Informationen müssen ja erst heruntergeladen werden, was durch Latenz und Dateigröße zu Verzögerungen führen kann. Die Empfehlung ist daher den CSS-Code aufzuteilen: Ein Teil inline, den Rest wie üblich in der CSS Datei.</p>
<p>Der Inline-Teil (also direkt im `&lt;head&gt;` durch `&lt;style&gt;`) soll alles beinhalten, was zum rendern des Sichtbereichs („above-the-fold“, der Begriff kommt von Zeitungen, wenn diese gefaltet sind, ist nur der obere Bereich der Zeitung sichtbar) notwendig is. Dieser Teil wird als „critical“ bezeichnet. Der Begriff „critical“ kommt von Ben Edwards, der diese Teile im CSS mit „critical“ angegeben hat.</p>
<h3>Welcher Code ist kritisch?</h3>
<p>Hört sich im Prinzip einfach an, aber wie kommt man jetzt an den Code der benötigt wird? Man könnte schon während der Erstellung darauf achten und diesen dann manuell kopieren. Das Ganze natürlich für die mobile und Desktop Ansicht ermittelt werden.</p>
<p>Es gibt dazu ein paar nützliche Tools:</p>
<ul>
<li><a href="https://gist.github.com/scottjehl/b6129da04733e4e0f9a4">CriticalCSS.js</a>: Code in die Browser-Konsole kopieren und mit URL ausführen.</li>
<li><a href="https://jonassebastianohlsson.com/criticalpathcssgenerator/">Critial Path CSS Generator</a>: URL eingeben, CSS eingeben, generieren.</li>
<li>Chrome Dev Tools Snippet (kann als Snippet in den Dev Tools angelegt werden): <a href="https://gist.github.com/PaulKinlan/6284142">CriticalCSS Bookmarklet and Devtool Snippet.js</a></li>
</ul>
<p>Wenn der kritische Teil des CSS eingebunden ist, kann auch noch zusätzlich der restliche Teil asynchron geladen werden, z. B. mit <a href="https://github.com/filamentgroup/loadCSS">loadCSS</a>.</p>
<h3>Automatisierung</h3>
<p>Schöner wäre es allerdings, das ganze zu automatisieren. Dazu kann man z. B. das Build System Gulp verwenden. Auf der Github-Seite von Addy Osmani gibt es dazu ein umfassendes <a href="https://github.com/addyosmani/critical-path-css-demo#tutorial">Tutorial</a>. Der Workflow mit Grunt wird im <a href="https://www.npmjs.com/package/critical">NPM Critical Package</a> beschrieben.</p>
<p>Der Ablauf für den Task ist wie folgt:</p>
<ul>
<li>Stylesheet-Dateien vom Quellverzeichnis in das Build-Verzeichnis kopieren.<br />
Notwendig für Fallback, falls kein JS aktiviert.</li>
<li>HTML-Datei einlesen und critical CSS ermitteln (dazu können Parameter wie Breite und Höhe angegeben werden).</li>
</ul>
<p>Das wars auch schon. Vorher sollte man in der HTML-Datei die `&lt;link&gt;`-Tags mit den CSS-Dateien annotieren, die man zu einer Datei zusammenfassen will. Die kritischen CSS-Regeln werden automatisch eigebunden. Außerdem ein Script (loadCSS), das sich um das asynchrone Nachladen der CSS-Dateien kümmert.</p>
<p>Nachteil: Die CSS-Dateien werden nicht geändert, d. h. die Regeln werden doppelt ausgeliefert, da mit dem Package die kritischen Regeln so gut wie möglich zusammengefasst werden. Hier besteht sicher noch Optimierungsbedarf des Packages. Dies kann z. B. mit CSS-Preprozessoren umgangen werden, indem man seine Dateien aufteilt und sich selbst um den Above-the-Fold-Code kümmert (also wieder manuell).</p>
<p>Ich habe das auch mit Gulp und der MFG-Website getestet, was auch ohne Probleme funktioniert hat. Da die MFG-Website aber ohnehin recht schnell lädt, konnte ich keinen Unterschied feststellen. Was lange gedauert hat zu laden, waren die Schriften (Stichwort: „FOIT“).</p>
<pre class="brush: jscript; title: ; notranslate">
gulp.task('critical', function() {
    critical.generateInline({
        // Verzeichnis mit den Quelldateien
        base: 'src/',
        // HTML-Datei im Quellverzeichnis
        src: 'index.html',
        // Datei die das kritische CSS enthalten soll
        styleTarget: 'dist/critical.css',
        // Neue HTML-Datei mit kritischem CSS und &amp;quot;loadCSS&amp;quot;
        htmlTarget: 'dist/index.html',
        // Breite die abgesucht wird
        width: 320,
        // Höhe die abgesucht wird
        height: 480,
        // Minify
        minify: true
    });
});
</pre>
<h3>Fazit</h3>
<p>Auf kritisches CSS zu achten, ist zeitaufwendig, kann sich aber bezahlt machen. User sind schnell wieder weg, wenn sie das Gefühl haben, zu lange auf die Seite warten zu müssen. Und gerade bei mobilen Geräten verschafft es einen zusätzlichen Schub. Ob sich der Aufwand lohnt (vielleicht lässt sich die Seite auch in anderen Punkte optimieren? Vielleicht muss ich gar nicht so viele Ressourcen ausliefern?) muss jeder für sich entscheiden.<br />
Wer HTTP/2 einsetzt, könnte auf solche Maßnahmen verzichten, denn damit lassen sich mehrere Requests mit einer Verbindung verarbeiten (Multiplexing) und Ressourcen können sich nicht mehr gegenseitig blockieren. Bis HTTP/2 aber allgegenwärtig ist dauert es sicher noch einige Jahre.</p>
<h3>Zusätzliche Links &amp; Quellen</h3>
<ul>
<li><a href="https://css-tricks.com/authoring-critical-fold-css/">Authoring Critical Fold CSS &#8211; CSS Tricks</a></li>
<li><a href="https://benedfit.com/2014/07/authoring-critical-above-the-fold-css/">Authorign Critical Above the Fold CSS &#8211; Ben Edwards</a></li>
<li><a href="http://www.smashingmagazine.com/2015/08/understanding-critical-css/">Critical CSS &#8211; Smashing Magazine</a></li>
<li><a href="https://github.com/pocketjoso/penthouse">Penthaus Critical CSS Generator</a></li>
<li><a href="https://github.com/filamentgroup/criticalCSS">Critical CSS Filament Group</a></li>
<li><a href="https://github.com/addyosmani/critical-path-css-tools">Sammlung von Tools für Critical CSS</a></li>
<li><a href="http://screengui.de/28">Screenguide #28</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/development/critical-css/">Critical CSS</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Microsoft Band (2014)</title>
		<link>https://mobile.fhstp.ac.at/news/microsoft-band-2014/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Mon, 19 Oct 2015 05:00:08 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[band]]></category>
		<category><![CDATA[Datenarmbänder]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[microsoft band]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5471</guid>

					<description><![CDATA[<p>Das Microsoft Band ist eine Smartband mit Smartwatch und Fitness Features. Die erste Version wurde Ende Oktober 2014 vorgestellt und kostete zum Start in den USA 199 Dollar (ca. 180 Euro). Das Band ist direkt in Österreich nicht erhältlich. Im April 2015 war es dann auch im UK um 170 Pfund (ca. 230 Euro) erhältlich. <a class="read-more" href="https://mobile.fhstp.ac.at/news/microsoft-band-2014/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/news/microsoft-band-2014/">Microsoft Band (2014)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das Microsoft Band ist eine Smartband mit Smartwatch und Fitness Features. Die erste Version wurde Ende Oktober 2014 vorgestellt und kostete zum Start in den USA 199 Dollar (ca. 180 Euro). Das Band ist direkt in Österreich nicht erhältlich. Im April 2015 war es dann auch im UK um 170 Pfund (ca. 230 Euro) erhältlich. Das Microsoft Band 2015 wird zum Start in den USA 250 Dollar (ca. 220 Euro) kosten und soll ab April 2016 auch in Europa verfügbar sein.</p>
<p><span id="more-5471"></span>Durch Zufall bin ich zu einem Microsoft Band gekommen (die erste Version, nicht das 2015er, dass ja erst vor Kurzem vorgestellt wurde) und habe es mit einer Testperson getestet. Die Testperson benutzt wenig Technik (kein PC, kein Smartphone) wollte das Band jedoch unbedingt probieren. Davor wurde der Person natürlich bewusst gemacht, dass die erhobenen Daten des Bandes zur Auswertung an Microsoft gesendet werden müssen. Der folgende Bericht bezieht sich also auf das Band ohne der Verwendung eines Smartphones.</p>
<h3>Funktionsumfang</h3>
<p>Das Band hat 10 Sensoren:</p>
<ul>
<li>Optischer Herzfrequenzmesser</li>
<li>Drei-Axen-Beschleunigungssensor</li>
<li>Gyrometer für Drehbewegungen</li>
<li>GPS</li>
<li>Mikrofon</li>
<li>Licht Sensor</li>
<li>Sensor für (psycho)galvanische Hautreaktion</li>
<li>UV Sensor</li>
<li>Haut Temperatur Sensor</li>
<li>Kapazitiver Sensor</li>
</ul>
<p>Der Akku hält lt. Website zwei Tage, so war es auch beim Test. Innerhalb von 1,5 Stunden war er wieder voll geladen. Leider ist nur ein USB-Kabel dabei, aber kein Adapter für eine Steckdose. Um das Band zu verwenden benötigt man ein Microsoft Konto (mit Angabe von Daten wie Geburtstag, Geschlecht, Größe, Gewicht), sonst kann man das Band nicht aktivieren und auch die Daten nicht auswerten.</p>
<p>Zur Aktivierung kann man entweder die mobile App „Microsoft Health“ verwenden (für WP 8.1, iOS 7.1+, Android 4.3+) oder die Software <a href="http://www.microsoft.com/de-at/download/details.aspx?id=44579">Microsoft Band Sync</a> für Windows oder OS X downloaden. Man braucht also kein Smartphone um das Band zu verwenden.</p>
<p>Das Band zeichnet während der Benutzung über den Tag hinweg Schritte, Puls, Distanz und verbrannte Kalorien (berechnet auf Basis Puls) automatisch auf. Es bietet viele Fitness-Features die als kleine Apps (Microsoft: Tiles) dargestellt werden: Programme für Laufen (Distanz-Aktivitäten, also auch Wandern, Gehen, Schifahren etc.), Radfahren, Workout (Fitness-Übungen wie Liegestütz, Sit-Ups, etc.) Schlaf, Golf und einen Trainigsplaner. Mit dem Trainingsplaner lassen sich Pläne auf das Band synchronisieren mit einem definierten Ziel. Das Web-Dashboard schlägt selbstständig (auf Basis der Daten) Pläne vor, man kann aber auch gezielt nach Plänen suchen bzw. welche anlegen.</p>
<p>Zusätzlich bietet es Tiles um es mit dem Smartphone zu koppeln: Neue Nachrichten anzeigen,  eingehend eAnrufe anzeigen, Kalendertermine anzeigen, Uhrzeit, Wecker und noch einige andere, die einzeln aktiviert bzw. deaktiviert werden können. Hat man ein Windows Phone kann man auch Cortona (Sprachassistent) verwenden.</p>
<p>Sehr positiv ist, dass man das eigene Smartphone beim Sport nicht dabei haben muss. Das Band reicht um alle notwendigen Daten aufzuzeichnen.</p>
<p>Für Entwickler gibt es <a href="http://developer.microsoftband.com/bandSDK">SDK</a> um eigene Microsoft Band Apps zu erstellen.</p>
<h3>Daten</h3>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/dashboard-1.jpg"><img fetchpriority="high" decoding="async" class="wp-image-5502 size-medium alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/dashboard-1-300x171.jpg" alt="Microsoft Health Dashboard" width="300" height="171" /></a>Das Web-Dashboard der Microsoft Health App bietet eine sehr gute Übersicht über die gesammelten Daten. Man sieht nicht nur die Daten sondern auch immer eine Bewertung ob man sich verbessert oder verschlechtert (Kardioleistung) hat bzw. Bestleistungen. Es ist auch möglich, sich mit anderen Personen zu vergleichen. Man sieht also wie Personen im selben Alter, etc. abschneiden.</p>
<p>Die Aktivität Radfahren zeigt zum Beispiel an, welche Distanz man gefahren ist, wieviele Kalorien man verbrannt hat, wo und wie schnell man gefahren ist und wie hoch der Puls war (Karte), geschätzte UV-Strahlung, Höhenmeter, ob man sich zur <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/dashboard-2.jpg"><img decoding="async" class="size-medium wp-image-5503 alignright" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/dashboard-2-300x171.jpg" alt="Microsoft Health Dashboard" width="300" height="171" /></a>letzten Einheit verbessert hat und auch eine erwartete Erholungszeit.</p>
<h3>Tragekomfort und Optik</h3>
<p>Die Testperson trägt täglich eine Uhr und empfindet das tragen des Bandes deshalb auch nicht anders als das tragen einer Uhr (das ist sicher Gewohnheit bzw. individuelles Empfinden). Es gibt 3 verschiedene Größen (S, M, L) die sich dann auch noch etwas feiner am Arm einstellen lassen.</p>
<p>Optisch gefällt das Band der Testperson. Es ist in schlichtem Schwarz gehalten und sieht modern aus. Die Farbe der Benutzeroberfläche lässt sich in der App ändern.</p>
<h3>Bedienung</h3>
<p>Das Band einzurichten ist für Smartphone-BenutzerInnen sicher kein Problem. Die App downloaden, Bluetooth aktivieren, Konto anlegen und schon kann man die Daten synchronisieren. Auch am Pc ist es einfach: Programm downloaden, installieren, Band mit USB-Kabel verbinden, Konto anlegen, Synchronisieren.</p>
<p>Die Bedienung ist ebenfalls einfach. Man hat einen Standby-Button (sperren/entsperren des Geräts) und einen Action Button (Starten/Stoppen von Programmen). Die restliche Bedienung folgt über Touch. Auf der linken Seite gibt es immer einen Zurück-Pfeil um wieder ins Hauptmenü zu kommen.</p>
<p>Da das Display länglich ist und dem Band entlang läuft kann es manchmal schwierig sein Einstellungen darauf vorzunehmen. Deshalb wird das Band auch oft am Unterarm getragen, das macht das Ablesen und die Bedienung etwas leichter.</p>
<h3>Was fehlt?</h3>
<p>Das Band und die Software befinden sich in stetiger Entwicklung. Derzeit hat man keine Möglichkeit Musik zu wiedergeben, man kann auch mit Smartphone nicht die Musik-App des Smartphones steuern. Auch eine Navigations-Funktion ist nicht vorhanden. Alles in allem bietet es aber schon jetzt umfangreiche Funktionen.</p>
<h3>Datenschutz</h3>
<p>Leider muss man, um eine Auswertung seiner Daten zu bekommen, die Daten an Microsoft senden. Microsoft versichert zwar, mit den Daten sorgfältig zum zu gehen, ich verstehe jedoch den Grund nicht, warum man nicht auch eine lokale Software anbietet, die es mir ermöglicht meine Daten offline auszuwerten, ohne sie ins Unbekannte zu versenden. Es wird ja wohl nicht eine Serverfarm zur Auswertung nötig sein. Es könnte dem Benutzer selbst überlassen werden ob er sich mit anderen vergleichen will oder nicht.</p>
<h3>Fazit</h3>
<p>Das Band bietet umfangreiche Möglichkeiten um seine Gesundheits- und Fitnessdaten über den Tag aufzuzeichnen. Auch die Auswertung wird übersichtlich dargestellt. Man benötigt auch kein Smartphone um das Band zu verwenden. Dadurch kann man sicher spannende Dinge erfahren und auch gezielt Sport betreiben und seine Fortschritte beobachten. Das Band bietet sicher zusätzliche Motivation zum Sport. Alles in allem eine super Sache, doch großer negativer Punkt: man muss die Daten an Microsoft senden um eine Auswertung zu bekommen.</p>
<h3>Links</h3>
<ul>
<li><a href="http://www.microsoft.com/microsoft-band/en-us">Microsoft Band</a></li>
<li><a href="https://www.microsoft.com/microsoft-band/en-us/get-started">Get Started</a></li>
<li><a href="http://www.microsoft.com/en-us/twc/privacy/commitment.aspx">Privacy Commitment</a></li>
<li><a href="http://www.microsoft.com/de-at/mobile/privacy/privacy/policy/privacy-policy/">Privacy Policy</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/news/microsoft-band-2014/">Microsoft Band (2014)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ownCloud und mobile Geräte</title>
		<link>https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/</link>
					<comments>https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/#comments</comments>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Fri, 28 Aug 2015 04:00:40 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Google Drive]]></category>
		<category><![CDATA[iCloud]]></category>
		<category><![CDATA[OneDrive]]></category>
		<category><![CDATA[ownCloud]]></category>
		<category><![CDATA[Sync]]></category>
		<category><![CDATA[Synchronisation]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5350</guid>

					<description><![CDATA[<p>Wie kann man seine Daten zwischen verschiedenen Geräten synchronisieren und vielleicht auch noch mit anderen Personen teilen und gemeinsam nutzen? Dafür gibt es viele bekannte Dienste, z.B Dropbox für Dateien. Auch Apple, Google und Microsoft bieten eigene Dienste an. Bei der Verwendung solcher Dienste muss man seine Daten aber Dritten anvertrauen. Mit ownCloud kann man <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/">ownCloud und mobile Geräte</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Wie kann man seine Daten zwischen verschiedenen Geräten synchronisieren und vielleicht auch noch mit anderen Personen teilen und gemeinsam nutzen? Dafür gibt es viele bekannte Dienste, z.B Dropbox für Dateien. Auch Apple, Google und Microsoft bieten eigene Dienste an. Bei der Verwendung solcher Dienste muss man seine Daten aber Dritten anvertrauen. Mit <a href="http://owncloud.org/">ownCloud</a> kann man jedoch eine eigene Cloud einrichten.</p>
<p><span id="more-5350"></span></p>
<h3>Was ist ownCloud?</h3>
<p>Mit ownCloud kann man seine eigene Cloud-Plattform einrichten, ohne die Daten in die Hand von Dritten geben zu müssen. Man benötigt einen Server mit PHP und optional auch MySQL/MariaDB oder PostrgreSQL, d.h. das Hosting der Daten wird in den meisten Fällen nicht selbst vorgenommen, denn die Wenigsten haben eigene Server zu Hause.<br />
Von ownCloud gibt es eine Community Edition und eine Enterprise Version. Die Enterprise Version bietet <a href="https://owncloud.com/owncloud-server-or-enterprise-edition/">zusätzliche Funktionen</a>. Aktuelle Version (Stand: August 2015) von ownCloud ist 8.1.1.</p>
<h3>Installation</h3>
<div id="attachment_5356" style="width: 183px" class="wp-caption alignright"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Installation.png"><img decoding="async" aria-describedby="caption-attachment-5356" class="size-medium wp-image-5356" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Installation-173x300.png" alt="Installationsbildschirm" width="173" height="300" /></a><p id="caption-attachment-5356" class="wp-caption-text">Einfache Installation</p></div>
<p>Nach dem Download von ownCloud werden alle Daten auf den Server übertragen. Beim Aufruf im Browser muss man nur einen Benutzername und Passwort wählen, sowie die Speicheroption und gegebenenfalls die Zugangsdaten für die gewählte Datenbank.<br />
Beim ersten Einstieg in ownCloud wird man auch gleich darauf hingewiesen, dass man sich verschiedene Apps downloaden kann, um auf die Daten zugreifen zu können. Es gibt eine iOS App, Android App und Clients für Windows, OS X und Linux.</p>
<div id="attachment_5357" style="width: 310px" class="wp-caption alignnone"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Willkommen.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5357" class="size-medium wp-image-5357" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Willkommen-300x143.png" alt="Willkommen bei ownCloud" width="300" height="143" /></a><p id="caption-attachment-5357" class="wp-caption-text">Willkommen bei ownCloud</p></div>
<p>Seit Version 8.1 geht die ownCloud in die Richtung zu einer Platform für Apps. Man kann somit verschiedene Anwendungen nachladen, z.B. eine App für Notizen. Dies ermöglicht auch Programmierern Anwendungen zu erstellen und diese auch zu verkaufen. Standardmäßig sind die Apps „Dateien“, „Aktivität“ und „Bilder“ aktiviert.</p>
<p>In den Administrator-Einstellungen (rechts oben auf den Benutzernamen klicken und „Administration“ wählen) kann man jetzt noch verschiedene Einstellungen vornehmen, z. B. die Verschlüsselung für die Daten am Server aktivieren. Danach muss man aber noch in den Apps das „Default encryption module“ aktivieren. Nach einem erneuten Login ist das Modul aktiviert und die Daten werden verschlüsselt. Man kann sich auch einen Wiederherstellungs-Schlüssel erstellen, um im Notfall die Daten wieder entschlüsseln zu können. Um wirklich sicher zu sein, sollte man aber auch HTTPS verwenden, damit die Daten auch bereits bei der Übertragung verschlüsselt sind.</p>
<h3>Dateien</h3>
<p>Wie schon erwähnt bietet ownCloud kostenlose Clients für Windows, OS X und Linux an. Für iOS und Android gibt es ebenfalls eine App zum Download, diese kostet jedoch knapp 1 Euro. Mit diesen Clients kann man auf Dateien zugreifen.</p>
<p>Alternativ kann man mittels WebDAV-Protokoll auf die Daten zugreifen. Die meisten Betriebssysteme bieten dafür Möglichkeiten an. Die Daten werden dann aber nicht lokal gespeichert sondern direkt abgerufen.</p>
<p>Man kann zwar vorhandene Daten (z. B. Kalender, Kontakte) aus einem vorhandenen Programm exportieren und in ownCloud importieren, leider kann man aber nicht einfach vorhandene Daten mit ownCloud verknüpfen. Das heißt, man muss zuvor Daten einspielen, um diese dann abzurufen, es geht nicht umgekehrt. Ein Programm kann also vorhandene Daten nicht hochladen.</p>
<h3>Kontakte und Kalender</h3>
<div id="attachment_5363" style="width: 310px" class="wp-caption alignright"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Kontakte.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5363" class="size-medium wp-image-5363" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Kontakte-300x143.png" alt="ownCloud Kontakte" width="300" height="143" /></a><p id="caption-attachment-5363" class="wp-caption-text">ownCloud Kontakte</p></div>
<div id="attachment_5362" style="width: 310px" class="wp-caption alignright"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Kalender.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5362" class="size-medium wp-image-5362" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/ownCloud-Kalender-300x143.png" alt="ownCloud Kalender" width="300" height="143" /></a><p id="caption-attachment-5362" class="wp-caption-text">ownCloud Kalender</p></div>
<p>Mit ownCloud kann man die Protokolle CardDAV und CalDAV verwenden, welche den Zugriff auf Kontakt- bzw. Kalenderdaten ermöglichen. Viele Softwareprodukte bieten diese Möglichkeiten an. Zuerst müssen die beiden Apps in ownCloud installiert werden. Diese finden sich unter „Apps &#8211; Produktivität“.</p>
<p>Wie gesagt, kann man auch Daten importieren. Für die Kontakte habe ich einfach drei Testkontakte angelegt. Um den Kalender zu testen, habe ich einen Kalender mit Terminen für Fußballspiele als ICS-Datei heruntergeladen. Bei den Kontakten gibt es eine eigene Import-Option (links unten), den Kalender braucht man nur als ICS in die Dateien hochladen und öffnen, danach bekommt man die Import-Option. Zum Testen hab ich auch in den bereits vorhandenen Kalender „Persönlich“ drei Termine eingetragen.</p>
<h4>iOS (8.1.2)</h4>
<p>Für Apple User gibt es die iCloud. Laut Apple werden dort auch alle Daten <a href="https://support.apple.com/en-us/HT202303">verschlüsselt übertragen und gespeichert</a> und der Schlüssel nur am Gerät des Benutzers abgelegt.</p>
<p>Unter “Einstellungen &#8211; Mail, Konakte, Kalender &#8211; Account hinzufügen &#8211; Andere &#8211; CardDAV-Account hinzufügen“ kann man die Adresse sowie die Zugangsdaten von ownCloud eingeben. Die Adresse findet man in der ownCloud Kontakte-App links unten. Das Synchronisieren hat gleich funktioniert, leider dann aber die erste Überraschung (siehe &#8220;Bug&#8221; weiter unten).</p>
<div id="attachment_5365" style="width: 179px" class="wp-caption alignright"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/iPhone-Kalender.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5365" class="size-medium wp-image-5365" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/iPhone-Kalender-169x300.png" alt="iPhone Kalender" width="169" height="300" /></a><p id="caption-attachment-5365" class="wp-caption-text">iPhone Kalender</p></div>
<p>Da zwei Kalender erstellt wurden, möchte ich einen zur Bearbeitung freigeben und den anderen nur zum lesen. Dazu habe ich in ownCloud einen neuen Benutzer erstellt, für den die Kalender freigegeben werden. Der Kalender wird gleich hinzugefügt wie die Kontakte. Bei der Kalender App für iOS darf man allerdings nicht den CalDAV-Link verwenden, sondern für iOS und OS X gibt es einen separaten Link, dieser findet sich links unten in den Einstellungen der Kalender App. Der einzige Nachteil hier ist, dass Benutzer, die mit eingeschränkten Rechten auf die Kalender zugreifen, die Einträge scheinbar ändern/löschen können, nach dem Abgleich mit dem Server diese dann aber wieder zurückgesetzt werden. Hier wäre es besser, wenn das iPhone sofort erkennt, dass man hier nichts ändern kann.</p>
<p>Das Ganze funktioniert auch am Mac (OS X 10.10.2) mit der Kalender- bzw. Kontakte-Anwendung. Für den Kalender muss man hier aber die PrimäreDAV-Adresse verwenden. Lokaler Sync zwischen einem PC/Mac und iPhone funktioniert über iTunes. Kommt jedoch ein drittes Gerät dazu kann es zu kleineren Problemen kommen.</p>
<h4>Android (5.1.1)</h4>
<p>Bei Android wird&#8217;s richtig unangenehm, denn das Gerät allein lässt sich ohne Google Konto schon fast nicht vernünftig nutzen. Man wird bei fast jeder Aktion darauf hingewiesen, dass man doch ein Google Konto anlegen soll, um die Daten zu synchronisieren.</p>
<p>Google Dienste verschlüsseln ihre Daten nicht, zumindest findet man keine Informationen darüber. <a href="http://www.heise.de/security/artikel/Warum-Google-uns-echte-Verschluesselung-verweigert-2191797.html">Aus Sicht von Google macht das auch wenig Sinn</a>.</p>
<p>Alternativ kann man eine andere Android Version wie Replicant oder CyanogenMod nutzen.<br />
Zum Synchronisieren mit der eignen Cloud braucht man dann noch zusätzliche Apps wie aCal, CalDAV-Sync Free Beta/CardDAV-Sync Free oder DAVDroid. Der Download so einer Anwendung funktioniert üblicherweise (es gibt Umwege) auch über den Play Store, für den man einen Google-Account braucht. Ist das geschafft, funktioniert die Synchronisation mit ownCloud und den Kontakte ähnliche gut wie bei iOS. Beim Kalender gibt&#8217;s Probleme, da Änderungen und neue Termine nicht übernommen werden. Dazu habe ich die Apps CalDAV-Sync Free Beta und CardDAV-Sync Free verwendet. Für die Synchronisierung der Kalenderdaten gibt es auch auf GitHub den Hinweis, dass diese noch fehlerhaft ist und bei sensiblen Daten nicht verwendet werden sollte. DAVDroid kostet ca. € 3,- dürfte sich aber bei regelmäßiger Verwendung lohnen und scheinbar gibt es damit auch keine Probleme (ungetestet).</p>
<p>Ein lokaler Sync funktioniert mit Tools vom jeweiligen Handyhersteller (Samsung Kies, HTC Sync Manager etc.).</p>
<h4>Windows Phone (8.1)</h4>
<p>Der Cloud-Dienst von Windows heißt OneDrive und bietet nur für <a href="https://technet.microsoft.com/en-us/library/dn905447.aspx">Business und SharePoint User Verschlüsselung</a> an oder <a href="https://www.boxcryptor.com/de/onedrive">mit zusätzlichen Tools</a>.</p>
<p>Um das Windows Phone 8.1 mit ownCloud zu synchronisieren, muss man einen Trick anwenden. Man geht auf „Einstellungen &#8211; E-Mail-Konten + andere &#8211; Konto hinzufügen &#8211; iCloud“ und gibt falsche Zugangsdaten ein. Das Gerät versucht zu synchronisieren. Danach kann man die Einstellungen des Kontos ändern. Leider akzeptiert das Windows Phone 8.1 (älter Versionen dürften CardDAV und CalDAV noch unterstützen) nur Server die HTTPS verwenden.</p>
<p>Obwohl die Server der FH auch über HTTPS erreichbar sind, habe ich es leider nicht hinbekommen mit ownCloud zu synchronisieren. Ich habe einiges versucht (Port 443 hinzufügen, Datum und Uhrzeit stellen, WLAN, Neustart) erhielt aber immer den Fehlercode 80072F06, was wohl auf ein <a href="https://forum.owncloud.org/viewtopic.php?t=17433">Problem mit dem Zertifikat zurückzuführen ist</a>. Man muss das Zertifikat selbst signieren und installieren, das war mir zu mühsam.</p>
<p>Schade, dass das Windows Phone CardDAV und CalDAV nicht unterstützt, man zwingt den Benutzer damit andere Dienste (z. B. OneDrive) zu verwenden. Eigentlich wäre ja schon die Basis dafür vorhanden (iCloud und Google verwenden CardDAV/CalDAV). Positiv ist aber, dass man viele andere Konten (iCloud, Google etc.) hinzufügen kann.<br />
Auch ein lokaler Sync ist nicht vorgesehen, z. B. mit Outlook und funktioniert nur mit zusätzlichen Tools wie AkrutoSync.</p>
<p>Leider unterstützt Outlook von Microsoft von Haus aus auch kein CardDAV oder CalDAV sondern nur unter Verwendung von Plugins.</p>
<h3>Bug: Kontakte</h3>
<div id="attachment_5361" style="width: 179px" class="wp-caption alignright"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/iPhone-Kontakte.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5361" class="size-medium wp-image-5361" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/08/iPhone-Kontakte-169x300.png" alt="iPhone Kontakte" width="169" height="300" /></a><p id="caption-attachment-5361" class="wp-caption-text">iPhone Bug Kontakte</p></div>
<p>Bei der Eingabe der Kontakte in ownCloud gibt es einen Bug (es gibt dazu bereits ein <a href="https://github.com/owncloud/contacts/issues/1028">Issue auf Github</a>). Gibt man den Namen im Feld „Name“ ein, wie man das auch vermuten würde, wir der Namen dann nicht richtig in Vor- und Nachname aufgeteilt, sondern im Feld „Nachname“ steht dann „Nachname;Vorname;;;“. Trägt man die Namen separat ein, funktioniert es. Auch ein Eintrag über das Gerät direkt hat funktioniert.</p>
<h3>Fazit</h3>
<p>Die Synchronisation von Kontakten und Kalenderdaten hat mit ownCloud am Besten mit dem iPhone funktioniert. Am schlechtesten mit dem Windows Phone. Bei Android funktioniert es halbwegs unter Verwendung von zusätzlichen Apps.<br />
Interessant wäre noch zu wissen, ob und wie eine Synchronisation der restlichen PIM-Daten (Kontakte, Kalender, Aufgaben, Notizen) funktioniert.<br />
Für ownCloud gibt es auch noch zahlreiche andere Apps (z.B. Fotos/Videos, Nachrichten, Bookmarks), auch hier wäre der Ablauf für die Synchronisation und gemeinsamen Zugriff/Nutzung spannend.<br />
Der gegenseitige Zugriff der drei Cloud Anbieter (Apple, Google, Microsoft) funktioniert &#8211; teilweise direkt, teilweise mit zusätzlichen Apps &#8211; über alle 3 Geräte.</p>
<h3>Quellen</h3>
<h4>Verlinkt</h4>
<ul>
<li>ownCloud<br />
<a href="http://ownCloud.org/">http://ownCloud.org/</a></li>
<li>ownCloud Server or Enterprise &#8211; owncloud.com<br />
<a href="https://owncloud.com/owncloud-server-or-enterprise-edition/">https://owncloud.com/owncloud-server-or-enterprise-edition/</a></li>
<li>iCloud Sicherheit &#8211; apple.com<br />
<a href="https://support.apple.com/en-us/HT202303">https://support.apple.com/en-us/HT202303</a></li>
<li>Google Verschlüsselung &#8211; heise.de<br />
<a href="http://www.heise.de/security/artikel/Warum-Google-uns-echte-Verschluesselung-verweigert-2191797.html">http://www.heise.de/security/artikel/Warum-Google-uns-echte-Verschluesselung-verweigert-2191797.html</a></li>
<li>Verschlüsselung in OneDrive &#8211; microsoft.com<br />
<a href="https://technet.microsoft.com/en-us/library/dn905447.aspx">https://technet.microsoft.com/en-us/library/dn905447.aspx</a></li>
<li>Boxcryptor<br />
<a href="https://www.boxcryptor.com/de/onedrive">https://www.boxcryptor.com/de/onedrive</a></li>
<li>ownCloud und Windows Phone 8 &#8211; owncloud.org<br />
<a href="https://forum.owncloud.org/viewtopic.php?t=17433">https://forum.owncloud.org/viewtopic.php?t=17433</a></li>
<li>GitHub ownCloud Contacts Issue &#8211; github.com<br />
<a href="https://github.com/owncloud/contacts/issues/1028">https://github.com/owncloud/contacts/issues/1028</a></li>
</ul>
<h4>Zusätzlich</h4>
<ul>
<li><a href="http://www.golem.de/news/owncloud-8-1-erschienen-wenn-die-cloud-zur-app-plattform-wird-1507-115091.html">http://www.golem.de/news/owncloud-8-1-erschienen-wenn-die-cloud-zur-app-plattform-wird-1507-115091.html</a></li>
<li><a href="http://www.heise.de/ct/ausgabe/2013-11-Kalender-und-Kontakte-ueber-OwnCloud-synchronisieren-2322019.html">http://www.heise.de/ct/ausgabe/2013-11-Kalender-und-Kontakte-ueber-OwnCloud-synchronisieren-2322019.html</a></li>
<li><a href="https://blindfoldwindows.wordpress.com/2014/11/30/windows-phone-8-1-und-caldavcarddav-mit-baikal/">https://blindfoldwindows.wordpress.com/2014/11/30/windows-phone-8-1-und-caldavcarddav-mit-baikal/</a></li>
<li>PIM: <a href="https://de.wikipedia.org/wiki/Personal_Information_Manager">https://de.wikipedia.org/wiki/Personal_Information_Manager</a></li>
<li><a href="https://fsfe.org/campaigns/android/liberate.de.html">https://fsfe.org/campaigns/android/liberate.de.html</a></li>
<li><a href="https://github.com/gggard/AndroidCaldavSyncAdapater/wiki/2-way-sync">https://github.com/gggard/AndroidCaldavSyncAdapater/wiki/2-way-sync</a></li>
<li><a href="http://www.thewindowsclub.com/encrypt-secure-onedrive-files">http://www.thewindowsclub.com/encrypt-secure-onedrive-files</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/">ownCloud und mobile Geräte</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mobile.fhstp.ac.at/allgemein/owncloud-und-mobile-geraete/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Meteor &#8211; Teil 3</title>
		<link>https://mobile.fhstp.ac.at/development/meteor-teil-3/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Wed, 29 Apr 2015 06:00:22 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[hybrid Apps]]></category>
		<category><![CDATA[Hybride Entwicklung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[meteor]]></category>
		<category><![CDATA[mobile Web App]]></category>
		<category><![CDATA[Web-App]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5267</guid>

					<description><![CDATA[<p>In unsere Blog habe ich bereits zwei Artikel zum Thema Meteor veröffentlicht Dieser Artikel geht auf User Accounts und Templates (Verarbeitung von Formulardaten, Context, Helpers) ein. User Accounts Um schnell und einfach eine Benutzeranmeldung zu ermöglichen kann man folgende Packages hinzufügen: meteor add accouts-password accounts-ui Jetzt kann man in einem Template mit `{{&#62; loginButtons}}` die <a class="read-more" href="https://mobile.fhstp.ac.at/development/meteor-teil-3/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/meteor-teil-3/">Meteor &#8211; Teil 3</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In unsere Blog habe ich bereits <a title="Meteor – Open Source Plattform für Web-Apps und Mobile-Apps" href="https://akirchknopf-21110.php.fhstp.cc/development/meteor-ein-webframework-fuer-alle/">zwei</a> <a title="Meteor – Teil 2" href="https://akirchknopf-21110.php.fhstp.cc/development/meteor-teil-2/">Artikel</a> zum Thema <a title="Meteor" href="http://meteor.com/">Meteor</a> veröffentlicht<br />
Dieser Artikel geht auf User Accounts und Templates (Verarbeitung von Formulardaten, Context, Helpers) ein.</p>
<p><span id="more-5267"></span></p>
<h3>User Accounts</h3>
<p>Um schnell und einfach eine Benutzeranmeldung zu ermöglichen kann man folgende Packages hinzufügen:</p>
<pre class="brush: bash; title: ; notranslate">meteor add accouts-password accounts-ui</pre>
<p>Jetzt kann man in einem Template mit `{{&gt; loginButtons}}` die Oberfläche für die Benutzeranmeldung hinzufügen. Welche Inhalte ein Benutzer sehen darf, bestimmt man am Besten vor den Router-Actions:</p>
<pre class="brush: jscript; title: ; notranslate">
    /** About route */
    this.route('about’, {
        path: '/about,
        onBeforeAction: function() {
            if (Meteor.userId()) { // Wenn eingeloggter Benutzer
                this.render('header', { to: 'header' });
                this.render('about');
            } else { // Wenn nicht eingeloggt
                Router.go(‚index’); // oder „this.next() um bei der „action:“ weiter zu machen
            }
        }
    });
</pre>
<p>Wie schon bekannt, ist der Code im Lib-Ordner („lib“) am Client und Server verfügbar. Das heißt, jemand könnte die Datei ändern und Zugriff zu der Route haben, obwohl er nicht eingeloggt ist. Das ist richtig, deshalb ist es umso wichtiger, dass man dem Client nicht vertraut und Server Methoden verwendet um die Daten zu prüfen und nur autorisierten Benutzern entsprechende Daten liefert.</p>
<p>Mehr dazu:</p>
<ul>
<li><a title="Meteor Accounts" href="https://www.meteor.com/accounts">Meteor Accounts</a></li>
<li><a title="Restrict Routes auf Stack Overflow" href="%20http://stackoverflow.com/questions/17874926/restrict-routes-in-meteor-js-to-privileged-users">Restrict Routes auf Stack Overflow </a></li>
</ul>
<h3>Formulardaten und Template Context</h3>
<p>Im ersten Artikel habe ich erklärt, dass jQuery bereits mitgeliefert wird und man deshalb auch einfach auf Formulardaten zugreifen kann. In Meteor gibt es aber einen eleganteren Weg, nämlich den Template Context zu verwenden.</p>
<p>Man übergibt das Template der Funktion und kann mit „.find()“ oder „.findAll()“ die gewünschten Daten holen.</p>
<pre class="brush: jscript; title: ; notranslate">
/**
 * Form event listener
 */
Template.TemplateName.events({
    /**
     * Submit form
     *
     * @param  object e Event
     * @param  object t Template
     * @return bool   False, for preventing default action
     */
    '#form submit: function(e, t) {
        console.debug(t.find(‚#value’).value;
        
        t.find('#form').reset(); 

        return false;
    }
});
</pre>
<p>Durch die Verwendung vom Template kann man, wenn man eine verschachtelte Datenstruktur hat, auch auf die Elternelemente zugreifen. Mit „t.data“ stehen alle Daten zur Verfügung.</p>
<p>Im Template selbst kann man beim Rendern auch Ebenen nach oben gehen.<br />
Hat man zum Beispiel ein Objekt von Benutzern („users“) und diese Benutzer haben mehrere Autos („cars“) mit Nummerntafeln und man möchte aber auch neben jeder Nummerntafel nochmal den Namen stehen haben, kann man in den Schleifen nach oben gehen.</p>
<pre class="brush: xml; title: ; notranslate">
{{#each users}}
    {{firstname}} {{lastname}}

    {{#each cars}}
        {{num}} belongs to {{../lastname}}
    {{/each}}
{{/each}}
</pre>
<p>Mehr dazu:</p>
<ul>
<li><a title="Blaze TemplateInstance findAll" href="%20http://docs.meteor.com/#/basic/Blaze-TemplateInstance-findAll">Blaze TemplateInstance findAll</a></li>
<li><a title="Accessing Parent data in Meteor" href="%20http://sebastiandahlgren.se/2014/01/09/accessing-parent-data-in-meteorjs/">Accessing Parent data in Meteor</a></li>
</ul>
<h3>Formulardaten und Reaktivität</h3>
<p>Meteor setzt stark auf Realtime. Das heißt, dass sich alle Variablen in den Templates selbst automatisch aktualisieren, wenn es nötig ist bzw. wenn sich die Daten ändern.</p>
<p>Das funktioniert ohne weiteres zutun, wenn man Daten in die Datenbank speichert. Will man aber jetzt nur den Status am User-Interface ändern ohne die Werte schon zu speichern, weil zum Beispiel noch andere Angaben gemacht werden und die Eingabe evtl. auch noch abgebrochen werden kann.<br />
Dazu verwendet man Sessions.</p>
<p>Ein Beispiel für einen Range Slider:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!— Template „testSlider“ —&gt;

&lt;lable for=„slider“&gt;Slider:&lt;/lable&gt;
&lt;input type=&quot;range&quot; id=„slider“ name=„slider“ min=&quot;0&quot; max=&quot;50&quot; step=&quot;1&quot; value=&quot;0&quot; /&gt;
&lt;output for=„slider“&gt;{{slider}}&lt;/output&gt;
```

```JavaScript
Template.testSlider.helpers({
    slider: function() {
        if (!Session.get(‚slider‘))
            Session.set(‚slider‘, 0);

        return Session.get(‚slider‘);
    },
});

Template.testSlider.events({
    'input #slider‘: function(e) {
        Session.set(‚slider‘, e.target.value);

        return false;
    }
});
</pre>
<p>Jetzt wird beim ändern des Sliders der aktuelle Wert in eine Session gespeichert und bei Bedarf ausgelesen.</p>
<p>Mehr dazu:</p>
<ul>
<li><a title="Meteor Sessions" href="%20http://docs.meteor.com/#/basic/session">Meteor Sessions</a></li>
</ul>
<h3>Template Helpers</h3>
<p>Mit Template Helpers kann man zum Beispiel Ausgaben formatieren oder andere Daten anhand der ausgegebenen Daten nachladen.</p>
<p>Man kann für jedes Template eigene Helper definieren</p>
<pre class="brush: jscript; title: ; notranslate">
Template.TemplateName.helpers({
    helper: function(context) {
        // do something…
    }
});
</pre>
<p>oder für alle Templates</p>
<pre class="brush: jscript; title: ; notranslate">
Template.registerHelper(‚helper‘, function(context) {
// do something…
});
</pre>
<p>Verwendet wird das dann so im Template:</p>
<pre class="brush: xml; title: ; notranslate">
{{helper ouputVar}}
</pre>
<p>Der übergebene Context kann auch weggelassen werden, wird er verwendet, wird dementsprechend der Wert von „ouputVar“ der Helper-Funktion übergeben.</p>
<p>Mehr dazu:</p>
<ul>
<li><a title="Meteor Template Helpers" href="%20http://docs.meteor.com/#/full/template_helpers">Meteor Template Helpers</a></li>
<li><a title="A look at a Meteor Template (Discover Meteor)" href="%20https://www.discovermeteor.com/blog/a-look-at-a-meteor-template/">A look at a Meteor Template (Discover Meteor)</a></li>
</ul>
<h3>Up Next</h3>
<p>Die nächsten Schritte wären, zu schauen, ob und wie die Sicherheit weiter verbessert werden kann und wie man das vorhandene Login-System verbessert (Benutzerprofile, etc.) bzw. ein Eigenes bauen kann. Ein weitere Schritt wäre, sich mit MongoDB weiter auseinander zu setzten, um bei größeren Projekten eine vernünftige Datenbank-Struktur aufbauen zu können.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/meteor-teil-3/">Meteor &#8211; Teil 3</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Meteor &#8211; Teil 2</title>
		<link>https://mobile.fhstp.ac.at/development/meteor-teil-2/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Thu, 23 Apr 2015 14:05:52 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[hybrid Apps]]></category>
		<category><![CDATA[Hybride Entwicklung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[meteor]]></category>
		<category><![CDATA[mobile Web App]]></category>
		<category><![CDATA[Web-App]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5239</guid>

					<description><![CDATA[<p>Im Artikel „Meteor – Open Source Plattform für Web-Apps und Mobile-Apps“ gab es bereits einen Überblick und Einstieg zu Meteor. Ich habe mich im Wintersemester 2014 noch weiter mit Meteor beschäftigt und werde in diesem Artikel darauf eingehen. Ordnerstruktur Grundsätzlich ist die Ordnerstruktur frei wählbar. Bereits im ersten Artikel wurde eine Startstruktur vorgestellt, die auch <a class="read-more" href="https://mobile.fhstp.ac.at/development/meteor-teil-2/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/meteor-teil-2/">Meteor &#8211; Teil 2</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Im Artikel „<a title="Meteor – Open Source Plattform für Web-Apps und Mobile-Apps" href="https://akirchknopf-21110.php.fhstp.cc/development/meteor-ein-webframework-fuer-alle/">Meteor – Open Source Plattform für Web-Apps und Mobile-Apps</a>“ gab es bereits einen Überblick und Einstieg zu Meteor. Ich habe mich im Wintersemester 2014 noch weiter mit Meteor beschäftigt und werde in diesem Artikel darauf eingehen.</p>
<p><span id="more-5239"></span></p>
<h3>Ordnerstruktur</h3>
<p>Grundsätzlich ist die Ordnerstruktur frei wählbar. Bereits im ersten Artikel wurde eine Startstruktur vorgestellt, die auch in der <a title="Meteor Docs File Strucutre" href="http://docs.meteor.com/#/basic/filestructure">Meteor Dokumentation</a> vorgeschlagen wird. Diese Struktur habe ich auch beibehalten und man kann damit gut arbeiten. Wenn man ein größeres Projekt plant, sollte man vielleicht genauer darüber nachdenken (z.B. Ordern &#8220;views&#8221;, &#8220;models&#8221;, etc.). Es gibt dazu verschiedene Ansätze im Web.</p>
<ul>
<li>client</li>
<li>    css</li>
<li>    js</li>
<li>lib</li>
<li>private</li>
<li>public</li>
<li>     img</li>
<li>server</li>
</ul>
<p>Im „client“ Ordner habe ich noch zwei Unterordner („css“ und „js“) angelegt. Direkt im Client-Ordner befinden sich meine HTML-Templates, im JS-Ordner die dazugehörigen JavaScript-Dateien. Der CSS-Ordner enthält alle CSS-Dateien. Diese kann man auch wieder nach belieben organisieren, da gibt es verschiedene Ansätze (SMACSS, BEM, OOCSS, etc.).</p>
<p>Der Lib-Ordner (Zugriff von Server und Client) enthält eine Datei, die Collections von MongoDB lädt. Außerdem eine Datei „routes.js“, dazu unten mehr.</p>
<p>Der Private-Ordner ist derzeit noch leer (hier kommen Dateien hin, die nur vom Server gelesen werden können). Im Public-Ordner habe ich einen Unterordner „img“ angelegt, der meine Bilder enthält, die ich für das Layout (z.B. Logo, Sprites, etc.) verwende.</p>
<p>Im Server-Ordner gibt es eine Datei „methods.js“. Diese stellt Methoden für den Datenbankzugriff zur Verfügung und ist nur vom Server aus erreichbar. Genauso wie die Datei „publish.js“, die festlegt, welche Daten von der Datenbank zum Client geschickt werden.</p>
<h3>Servermethoden und Sicherheit</h3>
<p>Grundsätzlich kann jeder Benutzer alles in der Datenbank verändern. Um das zu verhindern, ist es am Besten, wenn man Servermethoden definiert. Also statt direkt am Client die Datenbankoperationen aufzurufen (Insert, Update, Remove, etc.) erstellt man Servermethoden. In diesen kann man dann z.B. prüfen, ob die Daten korrekt sind oder der User auch wirklich autorisiert ist die Datenbankoperationen auszuführen.</p>
<p>Zuerst muss man das Package „insecure“ entfernen:</p>
<pre class="brush: bash; title: ; notranslate">meteor remove insecure</pre>
<p>Dieses Packet erlaub es die Daten vom Client aus zu ändern. Das mag für Prototyping sinnvoll sein, aber nicht für echte Anwendungen. Nach dem entfernen des Packets funktionieren keine Datenbankänderungen mehr vom Client aus. Jetzt muss man Servermethoden verwenden.<br />
Das schaut zum Beispiel so aus:</p>
<pre class="brush: jscript; title: ; notranslate">
// „server/methods.js“

Meteor.methods({
    /**
     * Add record
     *
     * @param int id Id of record
     * @param boolean status New status, true or false
     * @return boolean True for success, otherwise false
     */
    updateActive: function(theId, setStatus) {
        if (!Meteor.userId())
            throw new Meteor.Error('not-authorized');

        return Record.update(theId, { $set: { status: setStatus } });
    },
});
</pre>
<p>Am client ruft man jetzt die Funktion auf:</p>
<pre class="brush: jscript; title: ; notranslate">Meteor.call(‚updateActive’, 1, false);</pre>
<p>Damit lässt sich der Datenbankzugriff einschränken. Außerdem hat man einen weitern Vorteil der sich „Latency Compensation“ nennt. Während der Client den Request sendet, läuft eine Simulation direkt am Client die das Ergebnis anwendet. Wenn ein Ok vom Server zurück kommt, bleibt alles wie es ist, wenn nicht, wird das Resultat rückgängig gemacht.</p>
<h3>Publish und Subscribe</h3>
<p>Mit „Publish“ und „Subscribe“ gibt es eine weitere Sicherheitskomponente. Um nicht alle Daten an den Client zu schicken (z.B. private Benutzerdaten) wird zuerst das Packet „autopublish“ entfernt:</p>
<pre class="brush: bash; title: ; notranslate">meteor remove  autopublish</pre>
<p>Jetzt kann man im Ordner „server“ eine Datei „publish.js“ anlegen. Hier wird definiert, welche Daten zum Client geschickt werden sollen.</p>
<pre class="brush: jscript; title: ; notranslate">
// „server/publish.js“

/**
* Publish user data
*
* @return object User
*/
Meteor.publish('userdata', function() {
    return Events.find({
        owner: this.userId
    });
});
</pre>
<p>Das vorherige Beispiel zeigt, wie man z.B. nur die Daten des aktuellen Benutzers zurückliefern kann, damit dieser Benutzer nicht andere Benutzerdaten einsehen kann. Am Client muss dann noch die Methode</p>
<pre class="brush: jscript; title: ; notranslate">Meteor.subscribe(‚userdata);</pre>
<p>aufgerufen werden. Wenn man dann die Collection lädt und abruft, erhält man am Client nur noch die Daten des aktuellen Users.</p>
<pre class="brush: jscript; title: ; notranslate">
Data = new Mongo.Collection(‚userdata);

var d = Data.find();
</pre>
<p>Die Variable „d“ enthält jetzt nur alle Daten bei denen die Eigenschaft „owner“ (Id des Benutzers), der des aktuellen Benutzers entspricht.</p>
<h3>Iron Router</h3>
<p>In Meteor kann man zwar verschiedene <a title="Templates dynamisch laden" href="http://docs.meteor.com/#/full/template_dynamic">Templates dynamisch laden</a>, wenn man jedoch separate Seiten mit einer eindeutigen URL erstellen will, stößt man schnell auf „Iron Router“.</p>
<p>Iron Router ist zwar nicht in Meteor enthalten, lässt sich aber einfach nachinstallieren und ist quasi der Standard-Router bei Meteor-Projekten.</p>
<pre class="brush: bash; title: ; notranslate">meteor add iron-router</pre>
<p>Mit Iron Router lassen sich Routen definieren und je nach Route verschiedene Templates rendern. Außerdem kann beim Routing schon bestimmt werden, welche Daten dem Template zur Verfügung gestellt werden und was angezeigt werden soll während die Daten laden.</p>
<p>Um das ganze dynamisch zu gestalten, kann man auch eine Layout-Template wählen in welches die Routen (an der Stelle „{{&gt; yield}}“) gerendert werden. Außerdem können spezielle Regionen definiert werden, wie im folgenden Code („header“), der es erlaubt verschiedene Header zu rendern.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- „client/layout.html“ --&gt;

&lt;head&gt;
    &lt;title&gt;App Title&lt;/title&gt;
&lt;/head&gt;

&lt;template name=&quot;layout&quot;&gt;
    &lt;header&gt;
        {{&gt; yield &quot;header&quot;}}
    &lt;/header&gt;

    &lt;main role=&quot;main&quot;&gt;
        {{&gt; yield}}
    &lt;/main&gt;

    &lt;footer&gt;
        Footer
    &lt;/footer&gt;
&lt;/template&gt;
</pre>
<pre class="brush: jscript; title: ; notranslate">
// „lib/routes.js“

/**
 * Router config
 */
Router.configure({
    layoutTemplate: 'layout' // Datei „layout.html“ im Ordner „client“
});

/**
 * Define routes
 */
Router.map(function() {
    /** Index route for all */
    this.route('index', {
        path: '/',
        action: function() {
            this.render('header', { to: 'header' }); // Template mit Namen „header“
            this.render('index'); // Template mit Namen „indes“
        }
    });

    /** About route */
    this.route('about’, {
        path: '/about,
        action: function() {
            this.render('header', { to: 'header' });
            this.render('about');
        }
    });
});
</pre>
<p>Das Beispiel zeigt ein einfaches Routing mit zwei Routen. Wenn man keine Action oder sonstiges hat, kann man auch z.B. einfach nur `this.route(‚contact’);` schreiben, dann wird beim Aufruf von „/contact“ das Template „contact“ gerendert.</p>
<p>Mehr zu Iron Router:</p>
<ul>
<li><a title="Iron Router GitHub" href="https://github.com/iron-meteor/iron-router">Iron Router GitHub</a></li>
<li><a title="Iron Router Tutorial Manuel Schoebel" href="http://www.manuel-schoebel.com/blog/iron-router-tutorial">Iron Router Tutorial by Manuel Schoebel</a></li>
<li><a title="Meteor Tips - Iron Router Part 1" href="http://meteortips.com/tutorial/iron-router-part-1/">Meteor Tips &#8211; Iron Router Part 1</a></li>
<li><a title="Meteor Tips - Iron Router Part 2" href="http://meteortips.com/tutorial/iron-router-part-2/">Meteor Tips &#8211; Iron Router Part 2</a></li>
</ul>
<h3>Up Next</h3>
<p>Im nächsten Artikel werde ich auf User Accounts und Templates (Verarbeitung von Formulardaten, Context, Helpers) eingehen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/meteor-teil-2/">Meteor &#8211; Teil 2</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mobile Payment: Bezahlmöglichkeiten, Probleme, Herausforderungen und Erfolgsfaktoren</title>
		<link>https://mobile.fhstp.ac.at/studium/mobile-payment-bezahlmoeglichkeiten-probleme-herausforderungen-und-erfolgsfaktoren/</link>
		
		<dc:creator><![CDATA[Bernhard Zeller]]></dc:creator>
		<pubDate>Thu, 05 Feb 2015 23:00:12 +0000</pubDate>
				<category><![CDATA[Studium]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Wissenschaftliche Arbeit]]></category>
		<category><![CDATA[Bezahlen]]></category>
		<category><![CDATA[Mobile Payment]]></category>
		<category><![CDATA[Seminararbeit]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5190</guid>

					<description><![CDATA[<p>Für &#8220;Mobile Payment&#8221; wird bis 2017 ein Wachstum von 1,3 Billionen US-Dollar weltweit erwartet. Im Vergleich zum Jahr 2012 ist das eine Steigerung um 400 Prozent. Aber mobile Bezahlmöglichkeiten sind gerade in der westlichen Welt nicht erfolgreich. Deshalb hat sich die Seminararbeit „Mobile Payment: Bezahlmöglichkeiten, Probleme, Herausforderungen und Erfolgsfaktoren“ mit diesem Thema beschäftigt. Bei der <a class="read-more" href="https://mobile.fhstp.ac.at/studium/mobile-payment-bezahlmoeglichkeiten-probleme-herausforderungen-und-erfolgsfaktoren/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/mobile-payment-bezahlmoeglichkeiten-probleme-herausforderungen-und-erfolgsfaktoren/">Mobile Payment: Bezahlmöglichkeiten, Probleme, Herausforderungen und Erfolgsfaktoren</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Für &#8220;Mobile Payment&#8221; wird bis 2017 ein Wachstum von 1,3 Billionen US-Dollar weltweit erwartet. Im Vergleich zum Jahr 2012 ist das eine Steigerung um 400 Prozent. Aber mobile Bezahlmöglichkeiten sind gerade in der westlichen Welt nicht erfolgreich. Deshalb hat sich die Seminararbeit „Mobile Payment: Bezahlmöglichkeiten, Probleme, Herausforderungen und Erfolgsfaktoren“ mit diesem Thema beschäftigt. Bei der Arbeit handelte es sich um eine Seminararbeit die einen literarischen Überblick über das Thema geben soll.</p>
<p><span id="more-5190"></span></p>
<h3>Was ist Mobile Payment?</h3>
<p>„Mobile Payment“ bedeutet, dass man Waren aller Art bei einem Händler mit mobilen Geräten (nicht nur Smartphones, sondern auch z.B. Mobiltelefone oder PDAs) bezahlen kann. Das Bezahlsystem beschreibt wie ein Kunde oder Kundin bezahlt bzw. die Transaktion abläuft.</p>
<h3>Warum ist Mobile Payment wichtig?</h3>
<ul>
<li>Reichweite<br />
2,2 Milliarden Menschen auf der Welt haben kein Bankkonto, aber 1,7 Milliarden dieser Menschen haben ein mobiles Gerät.</li>
<li>Zusätzlicher Absatzkanal<br />
Es bietet dem Konsumenten einen zusätzlichen Weg um Käufe abzuwickeln</li>
<li>Reduzierung von Kosten<br />
Mobile Payment erhöht die Kundenbindung und reduziert die Kosten für Banken, den Banken benötigen so weniger Ressourcen (zum Beispiel MitarbeiterInnen am Schalter), da Kunden von unterwegs Zahlungen und Überweisungen tätigen können.</li>
<li>Gebühren<br />
Bei Kreditkarten-Transaktionen sind 5 Parteien (Konsument, Verkäufer, Handelsbank/Acquirer, Kartenaussteller/Issuer, Zahlungsnetzwerk) involviert, während bei mobilen Bezahlsystemen nur 3 Parteien (Konsument, Verkäufer, Payment-Provider). Somit fallen weniger Gebühren an.</li>
</ul>
<h3>Aktuelle Möglichkeiten</h3>
<h4>Account-Based Payment</h4>
<p>Für „Account-Based Payment“ wird ein Konto bei einem Dritten benötigt, zum Beispiel bei einer Bank.</p>
<ul>
<li>Mobile Phone-Based Payment<br />
Bezahlt wird über die Rechnung des Mobilfunkanbieters.<br />
Beispiel: Kauf eines Tickets für die U-Bahn via SMS.</li>
<li>Smart Card Payment Systems<br />
Basieren auf Karten die mit einem Chip ausgestattet sind.<br />
Beispiel: Bankomatkarte</li>
<li>Credit Card Mobile Payment Systems<br />
Telefonnummer wird mit Kreditkartendaten verknüpft, statt über die Rechnung des Mobilfunker abzurechnen.</li>
<li>Mobile POS (Point-of-Sale)<br />
Bezahlt wird mit einer Smartphone App.<br />
Beispiel: Starbucks App. Man zeigt dem Verkäufer den QR-Code der App. Dieser scannt den Code und kann zuvor aufgeladenes Guthaben abbuchen.</li>
</ul>
<h4>Mobile Wallets</h4>
<p>Softwareanwendungen die auf mobilen Geräten laufen und Details des Konsumenten (Kontodaten, Kreditkartendaten, etc.) nennt man „Mobile Wallets“.</p>
<p>Hier gibt es zwei Unterscheidungen:</p>
<ul>
<li>Client Wallets<br />
Alle Informationen sind am Gerät gespeichert. Nachteil: Upgrades durch Wallet-Anbieter sind schwierig, da geräteabhängig, Restrisiko bei Diebstahl des Geräts.</li>
<li>Hosted Wallets<br />
Daten werden auf dem Server des Anbieters gespeichert. Dadurch hat der Anbieter mehr Kontrolle über die Funktionalität und Sicherheit der Daten. Nachteil: Man muss die Daten einem Dritten anvertrauen, Restrisiko durch Hockerangriffe.</li>
</ul>
<h3>Probleme und Herausforderungen</h3>
<p>Wie bei jeder neuen Technologie gibt es auch bei Mobile Payment verschiedenste Herausforderungen, nicht nur technologisch sondern auch kundenspezifisch.</p>
<ul>
<li>Kundenakzeptanz<br />
Aktuell gibt es kein einheitliches System. Während sich Unternehmen mit der Technik dahinter beschäftigen, machen sich Konsumenten mehr Gedanken um Datenschutz, Komfort, Mehrwert oder Sicherheit. Viele Personen wissen, dass es die Möglichkeit für mobiles Bezahlen gibt, nutzen es aber einfach nicht.</li>
<li>Benutzerfreundlichkeit<br />
Solche Systeme müssen eine niedrige Lernkurve haben, einfach zu verstehen sein und Zeit sparen. Mobile Zahlungssysteme müssten die Benutzerfreundlichkeit von Bargeld erreichen.</li>
<li>Sicherheit<br />
Ein System soll logisch und nicht manipulierbar sein (Daten dürfen nicht kopierbar sein). Anonymität muss möglich sein. Außerdem müssen Konsumenten den Anbietern vertrauen, dass diese ihre Daten gut schützen.</li>
<li>Überprüfung/Kontrolle<br />
Konsumenten wollen überprüfen können, wann sie wo was ausgegeben haben. Dies steht etwas im Konflikt mit Sicherheit und Anonymität. Bargeld bietet zum Beispiel Rechnungen als Nachweis.</li>
<li>Universell<br />
Mobile Bezahlsysteme müssen alle möglichen Szenarien abdecken: B2B, B2C, C2C, Inlandsüberweisungen, Auslandsüberweisungen, Micropaymment, Macropayment</li>
<li>Zusammenspiel von Systemen<br />
Die unterschiedlichen Systeme müssen miteinander funktionieren und kompatibel sein.</li>
<li>Kosten<br />
Es dürfen nicht mehr Kosten entstehen als bei der Verwendung von gängigen Systemen (z.B. Kreditkarte)</li>
<li>Geschwindigkeit<br />
Durch die Verwendung von mobilen Zahlungssystemen darf keine zusätzliche Wartezeit für sich selbst oder Andere entstehen.</li>
</ul>
<h3>Erfolg</h3>
<p>Es gibt durchaus Erfolgsgeschichten die das Potential von mobilen Bezahlmöglickeiten zeigen. Die folgenden Faktoren hängten stark mit dem Erfolg in Zusammenhang.</p>
<ul>
<li>Routine<br />
Wenn es sich mit den Gewohnheiten der BenutzerInnen vereinbaren lässt, finden solche Systeme mehr Akzeptanz. Zum Beispiel für Personen die jeden Morgen zu Starbucks gehen, lässt sich die Starbucks-App gut verwenden und in die tägliche Morgen-Routine einbinden.</li>
<li>Sinn<br />
Personen die an einem Test teilgenommen haben, gaben an, dass ihnen manchmal spontan einfällt eine Rechnung bezahlen zu müssen. Dies ist mit mobilen Bezahlsystemen überall und jederzeit möglich. Außerdem gaben viele Personen an, oft ihre Geldbörse zu vergessen, nie aber ihr Smartphone.</li>
<li>Gamification<br />
Es gibt Anbieter, die spielerische Element ein ihre Anwendungen einbinden. Das heißt, wer oft die Anwendung benutzt, bekommt Punkte oder Rabatte.</li>
<li>Soziale Wahrnehmung<br />
Personen die solche Anwendungen verwendet haben, fühlten sich im Moment der Anwendung sozial stärker wahrgenommen. Sie beschreiben ein positives Gefühl, wenn andere Personen sie dabei sehen, wenn sie ihr Smartphone zum Bezahlen verwenden. Es ist fortschrittlich und nicht etwas Besonderes, denn nicht jeder verwendet es.</li>
<li>Value Added Services<br />
Das Einbinden von Ergänzungsdiensten steigert den wahrgenommenen Nutzen von Anwender/-innen. Zum Beispiel kann man mit der Starbucks-App nicht nur bezahlen, sondern auch andere Informationen abrufen.</li>
</ul>
<h3>Lösungsansätze</h3>
<p>Nicht alle Probleme und Herausforderungen haben Lösungsansätze. Aber es gibt gewisse Voraussetzungen die erfüllt sein müssen, damit sich Kunden/-innen auf mobile Bezahlsysteme einlassen.</p>
<ul>
<li>Geeignet für jeden Geldbetrag<br />
Zahlung von kleinen als auch von großen Geldbeträgen müssen möglich sein</li>
<li>Verfügbarkeit/Szenarien<br />
Es müssen so viele Szenarien wie möglich abgedeckt werden. Bezahlsysteme dürfen nicht auf bestimmte Benutzergruppen (z.B. nur iOS Anwender) beschränkt sein.<br />
Serviceprovider, Banken und andere Parteien müssen zusammenarbeiten um die Kompatibilität der unterschiedlichen Systeme zu ermöglichen.</li>
<li>Standards<br />
Service Provider sollen sich an existierende Standards halten um das Wachstum von mobilen Zahlungssystemen zu steigern.</li>
<li>Live Demonstrationen<br />
Forschungen haben gezeigt, dass Live Demonstrationen (BenutzerInnen live zeigen wie sie die Systeme verwenden können und welche Vorteile sie dadurch haben) einen große Einfluss auf potentielle NutzerInnen haben. Der Bedienkomfort solcher Systeme ist ein wichtiger Faktor und solche Vorführungen steigern die Wahrnehmung der Anwenderfreundlichkeit.</li>
</ul>
<h3>Resümee</h3>
<p>Die Seminararbeit und die Recherche haben gezeigt, dass es aktuelle eine unüberschaubare Anzahl an Lösungen im Mobile Payment Markt gibt. Einen eindeutigen Hardware- oder Softwarestandard gibt es (noch) nicht.</p>
<p>Ein Blick auf Entwicklungsländer hat gezeigt, dass dort mehr Potential besteht, da in diesen Ländern das Finanzsystem nicht so etabliert ist wie zum Beispiel in Amerika.<br />
Kunden/-innen haben außerdem ein starkes Verlangen nach Datenschutz, Sicherheit und Transparenz. Es ist sicher ein schwieriges Unterfangen all diese Anforderungen an ein gutes System zu erfüllen, aber sicher nicht unmöglich.<br />
Dennoch, wenn die Kunden ein System nicht akzeptieren, dann sollte nicht mit Zwang versucht werden eines zu etablieren. Schuld an mangelnder Akzeptanz ist nicht der Kunde, sondern das Produkt. Außerdem wäre es besser, die Kunden nicht nur zu befragen sondern Experimente und Live-Demonstrationen durchzuführen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/mobile-payment-bezahlmoeglichkeiten-probleme-herausforderungen-und-erfolgsfaktoren/">Mobile Payment: Bezahlmöglichkeiten, Probleme, Herausforderungen und Erfolgsfaktoren</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
