<?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 Iosif Miclaus - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm151571/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm151571/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Sun, 06 Nov 2016 13:24:43 +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 Iosif Miclaus - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm151571/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to use multiple node versions with nvm (macOS)</title>
		<link>https://mobile.fhstp.ac.at/development/webdevelopment/nvm/</link>
		
		<dc:creator><![CDATA[Iosif Miclaus]]></dc:creator>
		<pubDate>Sun, 23 Oct 2016 22:42:13 +0000</pubDate>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[multiple]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[nvm]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[versions]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6455</guid>

					<description><![CDATA[<p>When we think about Web development today, some of us subconsciously get goosebumps, especially when thinking about node and npm packages. If you ever came across node and got the chance to try it out or you already have used it in production, you might have come across one BIG (pronounced w/ a strong intonation) issue: versions. <a class="read-more" href="https://mobile.fhstp.ac.at/development/webdevelopment/nvm/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/nvm/">How to use multiple node versions with nvm (macOS)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="p1"><span class="s1">When we think about Web development today, some of us subconsciously get goosebumps, especially when thinking about node and npm packages. If you ever came across node and got the chance to try it out or you already have used it in production, you might have come across one <strong>BIG</strong> (pronounced w/ a strong intonation) issue: versions. Depending on how you take it, it’s either an issue or a challenge. Let me illustrate this problem in a couple of words, after which we will look at a possible solution: <strong>nvm</strong>.</span></p>
<p class="p1"><span id="more-6455"></span></p>
<p class="p1"><span class="s1">Imagine you are coding on a bunch of projects and you&#8217;re currently using <code>node v5.1.0</code>. Let’s assume that next week you are going to join a workshop about Ionic 2, where you will get first glimpses of what it actually is. The only thing you have to do is get Ionic 2 (and Cordova) up and running and wait for time to pass (like you don’t have anything better to do) until the workshop. So you go to the <a href="http://ionicframework.com/docs/v2/getting-started/installation/">Installation guide</a> on the official Ionic website and because you are a good developer, you start carefully reading the documentation:</span></p>
<p class="p1"><span class="s1"><em>“Ionic 2 apps are created…”</em>, you are reading silently, <em>“… bla bla blah… To create Ionic 2 projects… mhmm…”</em>, after which you stop and stare in complete devastation to your desktop screen in disbelief of what you’ve just read: <em>“you’ll need a recent version of Node.js”</em> – <em>speechless!</em> However your heart only totally stopped beating after you’ve read the next line: <em>“Download the installer for Node.js 6 or greater”</em> – <em>What?!</em></span></p>
<p class="p1"><img decoding="async" src="http://gif-finder.com/wp-content/uploads/2016/02/Anchorman-2-The-Legend-Continue-Ron-Burgundy-Will-Ferrell-What-Gif.gif" /></p>
<p class="p1"><span class="s1">Those of you, who know what I&#8217;m talking about, can understand my feelings about installing a new node version and the need of a <em>kilometre long story</em>. Furthermore, the idea of an installer for node is quite uncomfortable, since this could potentially break my existing tens of projects – thus personally unacceptable. What about all my npm packages? Will those still be compatible with the new node version? Do they also have to be updated? What if I have different requirements for different projects and therefore the need of multiple node versions? There has to be a better way! </span></p>
<p class="p1"><span class="s1">And luckily there is! ????</span></p>
<h2 class="p3"><b>Node Version Manager (nvm)</b></h2>
<p class="p1"><span class="s2"><a href="https://github.com/creationix/nvm">https://github.com/creationix/nvm</a></span></p>
<p class="p1"><span class="s1">If you start reading the <code>README.markdown</code> file, it says that Windows is not supported – <em>what a shame</em>. This tutorial will only target platforms / systems, that are supported by nvm. Other recommended Windows alternatives are: </span></p>
<ul>
<li class="li1"><span class="s3"><a href="https://github.com/coreybutler/nvm-windows"><span class="s4">https://github.com/coreybutler/nvm-windows</span></a></span></li>
<li class="li1"><span class="s3"><a href="https://github.com/marcelklehr/nodist"><span class="s4">https://github.com/marcelklehr/nodist</span></a></span></li>
</ul>
<h3 class="p4"><span class="s1"><b>Install nvm </b></span></h3>
<p class="p1"><span class="s1">Following the installation instructions from the <code>README</code> file, we can simply install or update nvm <em>using cURL</em>:</span></p>
<p><script src="https://gist.github.com/miclaus/19ebb8f0957cba0d29391c8e2497c04a.js"></script></p>
<p><span class="s1"><em>or Wget</em>:</span></p>
<p><script src="https://gist.github.com/miclaus/0077ce238f9426254151cb52bca91165.js"></script></p>
<p class="p1"><span class="s1">To load nvm you need the following source lines to your profile (<code>~/.bash_profile</code>, <code>~/.zshrc</code>, <code>~/.profile</code>, or <code>~/.bashrc</code>):</span></p>
<p><script src="https://gist.github.com/miclaus/c6bc9813d0732edf7675b34a28b160ad.js"></script></p>
<p>You might need to manually source your profile:</p>
<p><script src="https://gist.github.com/miclaus/573dc7aef3d4b23085f421cf456e47d6.js"></script></p>
<p class="p1"><span class="s1">Now open up a new Terminal window / tab and type <code>nvm</code>. You should see the available nvm commands. If anything went wrong or you can’t find the nvm command, please further refer to the nvm <a href="https://github.com/creationix/nvm#node-version-manager-"><code>README</code></a> file for more information. </span></p>
<h3 class="p1"><span class="s1"><b>Install desired node versions</b></span></h3>
<p class="p1"><span class="s1">To install the latest node version – you guessed it right – run:</span></p>
<p><script src="https://gist.github.com/miclaus/d7b8aac71963fffb91492451aaec2fc3.js"></script></p>
<p><span class="s1">To request a list of all remotely available version run:</span></p>
<p><script src="https://gist.github.com/miclaus/c71d2b40532886b03bd6975e3c0cac93.js"></script></p>
<p class="p1"><span class="s1">To install a specific version run:</span></p>
<p><script src="https://gist.github.com/miclaus/73f9743f7d7c22a9c74fe181b99bb9eb.js"></script></p>
<p><span class="s1">Conveniently, this comes with npm, which opens the gates to the <em>gazillion</em> of good stuff.</span></p>
<p><span class="s1">You can easily switch between node version:</span></p>
<p><script src="https://gist.github.com/miclaus/c8863ed869021ddc8f4c78ccefc25e5c.js"></script></p>
<p class="p1"><span class="s1">Last but not least you check your current node version:</span></p>
<p><script src="https://gist.github.com/miclaus/9bae0d69f706ec1a5e1a3269e43d566f.js"></script></p>
<p class="p1"><span class="s1">As you can see nvm provides a very convenient way of switching between node versions and it&#8217;s the way to go when you have different requirements for your projects or you simply remained a little behind considering the pace at which web development tools are evolving nowadays.</span></p>
<h3 class="p1">Biggest benefits</h3>
<p>Besides being able to choose between multiple node versions, the biggest benefits using nvm in my opinion are:</p>
<ol>
<li>Version specific npm packages – meaning that your global npm packges will be installed <strong>per node version</strong>.</li>
<li>You <strong>don&#8217;t have to run npm with <code>sudo</code></strong> anymore !</li>
</ol>
<p class="p1"><span class="s1">Hopefully, this helped you out ! ????</span></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/webdevelopment/nvm/">How to use multiple node versions with nvm (macOS)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Laravel initial project setup</title>
		<link>https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/</link>
		
		<dc:creator><![CDATA[Iosif Miclaus]]></dc:creator>
		<pubDate>Tue, 05 Jul 2016 18:39:35 +0000</pubDate>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Setup]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=6383</guid>

					<description><![CDATA[<p>There is a point where other developers join a project and want to get the app working on their local environment. In this post we will concentrate on how to create an initial project setup script and mention some simple steps to think about, in order to make it easier for new developers to setup a Laravel 4.2 <a class="read-more" href="https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/">Laravel initial project setup</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There is a point where other developers join a project and want to get the app working on their local environment. In this post we will concentrate on how to <strong>create an initial project setup script</strong> and mention some simple steps to think about, in order to make it easier for new developers to setup a <strong>Laravel 4.2</strong> project on local environments.</p>
<p><span id="more-6383"></span></p>
<p>With growing popularity of the Laravel framework in the last years, I&#8217;ve had the opportunity to contribute to some projects constituted – under many – by no other than the Laravel framework. It&#8217;s a wonderfully convenient framework, which strives to make PHP development more comfortable. Thus including services for creating routes with pretty URLs, templating and rendering views dynamically, authorization, and maany more chocolate bits. You should definitely take a look at the documentation – there will be a link at the end.</p>
<h3>Clone / download</h3>
<p>Supposably the whole app source code is under a repository on Github – we&#8217;ll use as an example &#8220;Mobilot&#8221; a Mobile Forschungsgruppe project, which you can either clone or download:</p>
<blockquote><p><a href="https://github.com/fhstp-mfg/mobilot">https://github.com/fhstp-mfg/mobilot</a></p></blockquote>
<p>Mobilot is a system for creating intuitive mobile information systems. Basically it&#8217;s more than just that, but it&#8217;s not important for now. Technically, Mobilot is a Laravel setup serving an Angular (hybrid) app with custom logic. Thus we&#8217;re going to setup Laravel locally.</p>
<h3>Project directory</h3>
<p>In the Mobilot project directory we can see a typical Laravel installation give or take a few files.</p>
<p>A typical installation includes:</p>
<ul>
<li><strong>app</strong> folder – includes everything from config, controllers, database migrations, libraries, models, tests, views to routes and other</li>
<li><strong>bootstrap</strong> folder – autoloads dependencies and bootstraps the app</li>
<li><strong>public</strong> folder – includes the resources and assets served to the user<br />
(NOTE: in production mode, the public folder dissolves and joins the root folder)</li>
</ul>
<h4>Mobilot root directory</h4>
<div id="attachment_6384" style="width: 1992px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-6384" class="wp-image-6384 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-18.53.53.png" alt="Mobilot root directory" width="1982" height="1208" /><p id="caption-attachment-6384" class="wp-caption-text">Figure 1 – Mobilot root directory – A Laravel server serving an Angular (hybrid) app.</p></div>
<h3>Composer</h3>
<p>Other than that there is a <strong>cordova</strong> folder, which includes platform-specific hybrid projects and a <strong>setup</strong> folder, which includes setup resources. The missing <strong>vendor</strong> folder, usually includes all app dependencies; since every developer can download dependencies individually on ones machine, we leave this up to the PHP depencency manager &#8220;Composer&#8221; – check it out, it&#8217;s really good:</p>
<blockquote><p><a href="https://github.com/composer/composer">https://github.com/composer/composer</a></p></blockquote>
<h3>Setup</h3>
<p>The following steps we&#8217;d have to do for a complete Laravel setup:</p>
<ul>
<li>Create a database</li>
<li>Install dependencies w/ &#8220;composer install&#8221;</li>
<li>Create missing Laravel directories</li>
<li>Setup database configuration for local environment (e.g. Homestead, MAMPP or XAMPP)</li>
<li>Correct permissions</li>
<li>Run Laravel migrations</li>
</ul>
<p>To perform these platform-specific actions on Laravel projects is quite time consuming. Therefore we created 2 simple setup scripts, one for Mac OS X and one for Windows, for setting up Mobilot. <strong>These setup scrips can be easily adapted for similar Laravel projects. </strong>According to docs, some steps have to be done manually, the script guides through this process. You can also <strong>read the docs</strong> to help you setup the project:</p>
<blockquote><p><a href="https://github.com/fhstp-mfg/mobilot/wiki/Setup">https://github.com/fhstp-mfg/mobilot/wiki/Setup</a></p></blockquote>
<p>The script will guide you through the setup process, asking you questions and performing actions for you, as seen further below in <strong>Figure 2</strong>:</p>
<ul>
<li><strong>Manually</strong> create a (MySQL preferred) database called &#8220;mobilot&#8221;</li>
<li>Depending on your platform run <strong>setup.sh</strong> for Mac OS X and <strong>setup.bat</strong> for Windows:
<ul>
<li>Firstly, the script will ask whether the database has been created.</li>
<li>Then, the Laravel dependencies will be installed – might take a while &#8230;</li>
<li>Then, the script will ask about your local environment.<br />
(e.g. Homestead VM, MAMPP or XAMPP)</li>
<li>It will prepare a database config file, which <strong>you should edit before proceeding</strong>,<br />
or else it will not work an you&#8217;ll get a specific error, we&#8217;ll talk about in a moment.</li>
<li>Finally, the script will ask you whether you want to immediately test the Laravel setup.</li>
</ul>
</li>
</ul>

<a title="Mobilot initial project setup script" href='https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/attachment/screen-shot-2016-07-05-at-19-37-18/'><img decoding="async" width="150" height="150" src="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Mobilot initial project setup script" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.37.18-128x128.png 128w" sizes="(max-width: 150px) 100vw, 150px" /></a>

<h3>Errors / special cases</h3>
<p>In some cases you&#8217;ll get a vague error when trying to execute migrations as seen in <strong>Figure 3</strong>. Also if you serve the app and request <strong>http://localhost:8000</strong>, the Mobilot loading screen shown as seen in <strong>Figure 4</strong>, without actually loading the app, since it experiences the same error as seen in <strong>Figure 5</strong>:</p>

<a title="Setup script database error" href='https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/attachment/screen-shot-2016-07-05-at-19-32-51/'><img decoding="async" width="150" height="150" src="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Setup script database error" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.32.51-128x128.png 128w" sizes="(max-width: 150px) 100vw, 150px" /></a>
<a title="Mobilot loading" href='https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/attachment/screen-shot-2016-07-05-at-19-33-31/'><img loading="lazy" decoding="async" width="150" height="150" src="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Mobilot loading" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-398x400.png 398w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.33.31-128x128.png 128w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>
<a title="Database configuration broken browser console log" href='https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/attachment/screen-shot-2016-07-05-at-19-34-22/'><img loading="lazy" decoding="async" width="150" height="150" src="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-150x150.png" class="attachment-thumbnail size-thumbnail" alt="Database configuration broken browser console log" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-150x150.png 150w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-32x32.png 32w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-50x50.png 50w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-64x64.png 64w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-96x96.png 96w, https://mobile.fhstp.ac.at/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-19.34.22-128x128.png 128w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>

<p>This error might occur from either <strong>invalid user credentials</strong> in your database.php or the <strong>database socket</strong> is undefined. In case you use a unix local environment such as MAMP, you might need to uncomment the <strong>unix_socket</strong> line and configure your own local (MySQL) database socket path:</p>
<div id="attachment_6392" style="width: 1428px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6392" class="wp-image-6392 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2016/07/Screen-Shot-2016-07-05-at-20.07.27.png" alt="Database config unix_socket" width="1418" height="122" /><p id="caption-attachment-6392" class="wp-caption-text">Figure 6 – Database config unix_socket</p></div>
<h3>Notes</h3>
<ul>
<li><a href="https://laravel.com/docs/5.2/homestead">Laravel Homestead</a> is a highly recommended local environment for Laravel applications.</li>
<li>The presented script is thought for<strong> Laravel 4.2</strong>, which is currently used by Mobilot – this should update in the future.</li>
</ul>
<h3>Links</h3>
<ul>
<li><a href="https://github.com/fhstp-mfg/mobilot">Mobilot repository</a></li>
<li><a href="https://github.com/fhstp-mfg/mobilot/wiki/Setup">Mobilot setup guide</a></li>
<li>Initial project setup script:
<ul>
<li><a href="https://github.com/fhstp-mfg/mobilot/blob/master/setup.sh">setup.sh (Mac OS X)</a></li>
<li><a href="https://github.com/fhstp-mfg/mobilot/blob/master/setup.bat">setup.bat (Windows)</a></li>
</ul>
</li>
</ul>
<h4>Providers</h4>
<ul>
<li><a href="https://laravel.com/">Laravel</a></li>
<li><a href="https://laravel.com/docs/5.2">Laravel Docs</a></li>
<li><a href="https://laravel.com/docs/5.2/homestead">Laravel Homestead</a></li>
<li><a href="https://getcomposer.org/">Composer</a></li>
<li><a href="https://github.com/composer/composer">Composer repository</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/forschung/forschung-projekte/laravel-initial-project-setup/">Laravel initial project setup</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Studipuls</title>
		<link>https://mobile.fhstp.ac.at/studium/studipuls/</link>
		
		<dc:creator><![CDATA[Iosif Miclaus]]></dc:creator>
		<pubDate>Mon, 26 Oct 2015 17:30:35 +0000</pubDate>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[Applikation]]></category>
		<category><![CDATA[CoffeeScript]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[meteor]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Print-to-mobile]]></category>
		<category><![CDATA[QR-Code]]></category>
		<category><![CDATA[Social]]></category>
		<category><![CDATA[studipuls]]></category>
		<category><![CDATA[Web-App]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=5525</guid>

					<description><![CDATA[<p>Für die Initialaufgabe der Masterklasse &#8220;Mobiles Internet&#8221; 2015, sollten wir eine mobile Applikation unter dem Motto &#8220;Print &#8211; To &#8211; Mobile &#8211; Social&#8221; konzipieren und umsetzen. Interessenten sollten mithilfe des Printmediums zur App gelangen und zwar auf einer intuitiveren Weise als nur die URL der App im Browser einzugeben. Zusätzlich sollten wir auf die Benutzerfreundlichkeit (Usability) der App achten. Studipuls ist ein location-based, real-time <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studipuls/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studipuls/">Studipuls</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Für die Initialaufgabe der Masterklasse &#8220;Mobiles Internet&#8221; 2015, sollten wir eine mobile Applikation unter dem Motto &#8220;Print &#8211; To &#8211; Mobile &#8211; Social&#8221; konzipieren und umsetzen. Interessenten sollten mithilfe des Printmediums zur App gelangen und zwar auf einer intuitiveren Weise als nur die URL der App im Browser einzugeben. Zusätzlich sollten wir auf die Benutzerfreundlichkeit (Usability) der App achten.</p>
<p><span style="font-weight: 400;"><span style="text-decoration: underline;"><span style="color: #993366;"><a style="color: #993366; text-decoration: underline;" href="http://studipuls.meteor.com" target="_blank">Studipuls</a></span></span> ist ein location-based, real-time Photochat in den Räumen der FH St. Pölten. Bestimmte Räume der FH St. Pölten haben auf der Eingangstür oder innerhalb des Raumes einen Studipuls QR-Code, welcher beim Einscannen zum jeweiligen virtuellen Chatroom führt. In jedem Chatroom können Momente in Form von Bildern gepostet werden. <span id="more-5525"></span>Momente können durch Doppel-Tippen auf das Bild favorisiert werden. Dabei wird die Position des &#8220;Taps&#8221; für spätere Visualisierung gespeichert. Außerdem können zu jedem Moment, Kommentare hinzugefügt werden, welche in Echtzeit wiedergegeben werden. Die App ermöglicht nicht nur das Erfassen von Echtzeit-Momenten im jeweiligen Raum, sondern auch das Erkunden anderer virtueller Räume der FH St. Pölten durch eine Listenansicht aller verfügbaren Chaträume inkl. Suchfunktion. Optional wird nach einer Email Adresse gefragt, welche für die Teilnahme am Gewinnspiel notwendig ist.</span></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_0.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5692" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_0-300x300.png" alt="Studipuls Welcome Screen" width="300" height="300" /></a> <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_00.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5693" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_00-300x300.png" alt="Studipuls Home Screen" width="300" height="300" /></a></p>
<h3>Technologien</h3>
<p>Angesichts der Echtzeit Komponente der App, haben wir uns eindeutig für das JavaScript Framework Meteor entschieden, das mit der NoSQL Datenbank MongoDB arbeitet. Das Framework implementiert ein so genanntes &#8220;Reactive Rendering&#8221; System, welches Änderungen an MongoDB Collections erkennt und diese dem Client kommuniziert; der Client rendert schließlich die passende Anzeige. Ein weiterer Vorteil ist, dass man sowohl serverseitig als auch clientseitig in derselben Scriptsprache programmieren kann. Apropos haben wir uns des Weiteren entschieden die App in CoffeeScript umzusetzen &#8211; eine gute Möglichkeit CoffeeScript auszuprobieren.</p>
<h4>Packages</h4>
<ul>
<li>Manuelles Kompilieren von CoffeeScript bleibt uns durch das &#8220;coffeescript&#8221; Meteor Package erspart.</li>
<li>Das Front-End haben wir mithilfe von Bootstrap 3 unter Verwendung des Packages &#8220;twbs:bootstrap&#8221; umgesetzt. Weiters haben wir das &#8220;fezvrasta:bootstrap-material-design&#8221; Package integriert, um das User Interface komfortabel dem Material Design Stil anzupassen.</li>
<li>Um das Routing zu den einzelnen States einfach zu machen, haben wir den FlowRouter vom &#8220;philippspo:momentum-flow-router&#8221; Package verwendet.</li>
<li>Um die hochgeladenen Bilder in einem responsive Grid-Layout anzeigen zu lassen, haben wir das Package &#8220;voodoohop:masonrify&#8221; verwendet, das die Layout Library Packery implementiert.</li>
<li> Um die Bilder vor dem Upload zu komprimieren und zurecht zu schneiden, haben wir das &#8220;thinksoftware:image-resize-client&#8221; Package implementiert.</li>
<li>Da die freien Meteor Server (*.meteor.com) keine Schreibrechte auf das Dateisystem bieten, haben wir das &#8220;cfs:gridfs&#8221; Package implementiert, um Bilder in Form von &#8220;Chunks&#8221; in der entsprechenden MongoDB Collection zu speichern.</li>
<li>Um neue Gäste ohne eine Anmeldung als Benutzer zu erkennen, haben wir das &#8220;artwells:accounts-guest&#8221; Package verwendet.</li>
<li>Um Statistiken über die Verwendung der Applikation erfassen zu können, haben wir das &#8220;okgrow:analytics&#8221; Package implementiert und ein Google Analytics Account angelegt und die Applikation damit verbunden.</li>
<li>Bevor Kommentare in die Datenbank gespeichert werden, werden sie durch das &#8220;check&#8221; Meteor Package serverseitig überprüft, um Sicherheit und Datenintegrität zu gewährleisten.</li>
<li>Gestures können wir dank &#8220;chriswessels:hammer&#8221; Package leicht erkennen.</li>
</ul>
<h4>State diagram</h4>
<p>Folgendes (vereinfachtes) Zustandsdiagramm zeigt, zu welchen Screens der Benutzer navigieren kann und welche Aktionen ausgeführt werden können.</p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_state-diagram-2.jpg"><img loading="lazy" decoding="async" class="wp-image-5542 size-medium aligncenter" style="display: inline-block; text-align: center;" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_state-diagram-2-233x300.jpg" alt="Studipuls state diagram" width="233" height="300" /></a></p>
<h3><span style="line-height: 1.5;">Design</span></h3>
<p>Beim Design der App haben wir uns generell an das Google Material Design angelehnt, das Schatten verwendet, um Tiefe zu erzeugen und wichtige Interaktionselemente damit hervorzuheben.</p>
<h4>Schriftart</h4>
<p>Als Schriftart für den Lauftext wurde die einfache, serifenlose und leicht abgerundete Schriftart &#8220;Dosis&#8221; von Pablo Impallari gewählt, die unter der SIL Open Font Lizenz verfügbar ist.</p>
<h4>Farbschema</h4>
<p>Das Farbschema der App setzt sich aus Rot (#a11d3c), Dunkelgrau (#333) und Weiß zusammen. Die Farbe Rot erregt Aufmerksamkeit und wird in der App als Akzentfarbe eingesetzt, um wichtige Interaktionselemente zu kennzeichnen. Sie soll somit die Leute dazu animieren, mit der App zu interagieren und selbst Momente zu teilen und Kommentare zu schreiben. Die Farben Dunkelgrau und Weiß wurden verwendet, da sie einen sehr guten Kontrast zueinander bieten und gut mit Rot harmonieren.</p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_color_schema.jpg"><img loading="lazy" decoding="async" class="size-medium wp-image-5698 aligncenter" style="display: inline-block; text-align: center;" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_color_schema-300x96.jpg" alt="Studipuls Farbschema" width="300" height="96" /></a></p>
<h4>Logo</h4>
<p>Beim Design des Logos haben wir uns für ein einfaches Schriftlogo entschieden. Dieses wurde mit der Schriftart &#8220;Break&#8221; umgesetzt, die für persönlichen und kommerziellen Gebrauch frei zur Verfügung steht.</p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_logo.jpg"><img loading="lazy" decoding="async" class="size-medium wp-image-5697 aligncenter" style="display: inline-block; text-align: center;" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_logo-300x72.jpg" alt="Studipuls Logo" width="300" height="72" /></a></p>
<h4>Screenshots</h4>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_1.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5691" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_1-300x300.png" alt="Studipuls Welcome Screen" width="300" height="300" /></a> <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_2.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5688" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_2-300x300.png" alt="Studipuls Home Screen" width="300" height="300" /></a> <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_3.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5690" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_3-300x300.png" alt="Studipuls Chatraum Screen" width="300" height="300" /></a> <a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_4.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-5689" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/Studipuls_4-300x300.png" alt="Studipuls Bild Vorschau Screen" width="300" height="300" /></a></p>
<h4>Loginstation Plakat</h4>
<p>Einen Chatraum kann man nach Einscannen des jeweiligen QR-Codes sofort betreten. Die QR-Codes sind raumspezifisch und kommen im A3 Format mit einfachem Design. Beispiel der Aula Loginstation:</p>
<p style="text-align: justify;"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_aula.jpg"><img decoding="async" class="alignnone size-full" style="width: 100%;" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2015/10/studipuls_aula.jpg" alt="Studipuls Loginstation" /></a></p>
<h3>Fazit</h3>
<p>Das JavaScript Framework Meteor war die richtige Entscheidung, um diesen Echtzeit Photochat umzusetzen. Meteor erkennt Änderungen an Datenbank Collections sofort, zum Beispiel beim Upload von Bildern und beim Posten von Kommentaren, welche automatisch ohne Aktualisierung der Seite an den Client geliefert werden und die Anzeige neu gerendert wird. Somit ist kein weiterer Aufwand notwendig.</p>
<p>Beim Upload der Bilder stellten wir fest, dass es unbedingt notwendig war, diese zuvor clientseitig zu komprimieren und zurecht zu schneiden, da sonst der Upload auf mobilen Geräten zu lang gedauert hätte, große Bilder für die freien Meteor Server zu viel Last bedeutet hätten und die Anzeige auf mobilen Geräten mit quadratischen Bildern besser aussieht.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studipuls/">Studipuls</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
